alert("frames='.$frames.'");';die(); MSD_mysql_connect(); mysql_select_db($databases['db_actual']) or die($lang['db_select_error'].$databases['db_actual'].$lang['db_select_error2']); $restore['num_table_fields']=array(); // Array initialisieren //Zeitzähler aktivieren $restore['max_zeit']=intval($config['max_execution_time']*$config['time_buffer']); if($restore['max_zeit']==0) $restore['max_zeit']=20; $restore['startzeit']=time(); $restore['xtime']=(isset($_GET['xtime'])) ? $_GET['xtime'] : time(); $restore['fileEOF']=false; // Ende des Files erreicht? $restore['actual_table']= (!empty($_GET['actual_table'])) ? $_GET['actual_table'] : "unbekannt"; $restore['offset']= (!empty($_GET['offset'])) ? $_GET['offset'] : 0; $restore['aufruf']= (!empty($_GET['aufruf'])) ? $_GET['aufruf'] : 0; $restore['table_ready']= (!empty($_GET['table_ready'])) ? $_GET['table_ready'] : 0; $restore['part']= (!empty($_GET['part'])) ? $_GET['part'] : ""; $restore['do_it']= (isset($_GET['do_it'])) ? $_GET['do_it'] : false; $restore['errors']= (isset($_GET['err'])) ? $_GET['err'] : 0; $restore['anzahl_eintraege']=(isset($_GET['anzahl_eintraege'])) ? $_GET['anzahl_eintraege'] : 0; $restore['anzahl_tabellen']=(isset($_GET['anzahl_tabellen'])) ? $_GET['anzahl_tabellen'] : 0; $restore['filename']=(isset($_GET['filename'])) ? urldecode($_GET['filename']) : ""; $restore['actual_fieldcount']=(isset($_GET['actual_fieldcount'])) ? $_GET['actual_fieldcount'] : 0; $restore['eintraege_ready']=(isset($_GET['eintraege_ready'])) ? $_GET['eintraege_ready'] : 0; $restore['anzahl_zeilen']=(isset($_GET['anzahl_zeilen'])) ? $_GET['anzahl_zeilen'] : $config['minspeed']; $restore['summe_eintraege']=(isset($_GET['summe_eintraege'])) ? $_GET['summe_eintraege'] : 0; $restore['erweiterte_inserts']=(isset($_GET['erw_ins'])) ? $_GET['erw_ins'] : 0; $restore['flag']=(isset($_GET['flag'])) ? $_GET['flag'] : -1; //0=Datenbank 1=Struktur $restore['kind']=(!isset($_GET['kind'])) ? $_GET['kind']:0; if($restore['kind']==0) $fpath=$config['paths']['backup']; else $fpath=$config['paths']['structure']; $restore['compressed'] = (substr(strtolower($restore['filename']),-2)=="gz") ? 1 : 0; $fmp=0; //auf Multipart überprüfen if(strlen($restore['filename'])>20) { $fname=substr($restore['filename'],-20); $pp=strpos($fname,"part"); $fmp=($pp>0); if(($fmp>0) && $restore['offset']==0 && $restore['part']=="") { //ersten Part erzeugen $restore['filename']=NextPart($restore['filename'],1); } } // Datei oeffnen $restore['filehandle'] = ($restore['compressed']) ? gzopen($fpath.$restore['filename'],"r") : fopen($fpath.$restore['filename'],"r"); if ($restore['filehandle']) { //nur am Anfang Logeintrag if($restore['offset']==0) { if($fmp>0)WriteLog("Start Multipart-Restore '".$restore['filename']."'"); else WriteLog("Start Restore '".$restore['filename']."'"); // Statuszeile auslesen $statusline= ($restore['compressed']) ? gzgets($restore['filehandle'],40960):fgets($restore['filehandle'],500); $sline=ReadStatusline($statusline); $restore['anzahl_tabellen']=$sline[0]; $restore['anzahl_eintraege']=$sline[1]; $restore['part']=($sline[2]=="") ? 0 : substr($sline[2],3); if($config['empty_db_before_restore']==1 && $restore['part']==0) EmptyDB($databases['db_actual']); $restore['tablelock']=0; $restore['erweiterte_inserts']=0; $restore['protokoll'][]=$statusline; } else { if ($restore['compressed']==0) $filegroesse=filesize($fpath.$restore['filename']); // Dateizeiger an die richtige Stelle setzen ($restore['compressed']) ? gzseek($restore['filehandle'],$restore['offset']) : fseek($restore['filehandle'],$restore['offset']); // Jetzt basteln wir uns mal unsere Befehle zusammen... $a=0; $dauer=0; //lock_table($restore['actual_table']); WHILE ( ($a<$restore['anzahl_zeilen'] ) && (!$restore['fileEOF']) && ($dauer<$restore['max_zeit']) && !isset($restore["EOB"]) ) { $sql_command=get_sqlbefehl(); if($sql_command!="") { $meldung=""; $res=mysql_query($sql_command,$config['dbconnection']); //if(strtoupper(substr($sql_command,0,12))=="CREATE TABLE") lock_table(); // Bei MySQL-Fehlern sofort abbrechen und Info ausgeben $meldung=mysql_error($config['dbconnection']); if ($meldung!="") { if($config['stop_with_error']==0) { Errorlog("RESTORE",$databases['db_actual'],$sql_command,$meldung); $restore['errors']++; } else { SQLError($sql_command,$meldung); die(); } } $anzsql=mysql_affected_rows($config['dbconnection']); if($anzsql>1){ $restore['eintraege_ready']+=($anzsql-1); //WriteLog("Erweiterte Inserts: $anzsql Einträge in ".$restore['actual_table']); } } $a++; $dauer=time()-$restore['startzeit']; } $eingetragen=$a-1; } $restore['offset']= ($restore['compressed']) ? gztell($restore['filehandle']) : ftell($restore['filehandle']); if ($restore['compressed']) gzclose($restore['filehandle']); else fclose($restore['filehandle']); $aus_header[]= PicCache($relativ_path); $aus_header[]= headline($lang['restore']); $aus_header[]='Browser : '.(($frames==0) ? " (automatisch erkannt)" : ""); //.' / '.$frames; if (!$restore['fileEOF'] && !isset($restore["EOB"])) { $restore['aufruf']++; if (!$restore['compressed']) $prozent=($filegroesse>0) ? ($restore['offset']*100)/$filegroesse : 0; else { if ($restore['anzahl_eintraege']>0) $prozent=$restore['eintraege_ready']*100/$restore['anzahl_eintraege']; else $prozent=0; } if ($prozent>100) $prozent=100; if($aus1!="") $aus[]= '
'.$aus1.'

'; $aus[]= '

'.sprintf($lang['restore_db'],$databases['db_actual'],$config['dbhost']).'

'; //$aus[]=$lang['restore_db1'].$config['dbhost'].$lang['restore_db2'].'

Backup-File: '.$restore['filename'].''; if($fmp>0) $aus[]= '
Multipart File '.$restore['part'].'
'; //if($restore['erweiterte_inserts']==1) $aus[]='
Format: erweiterte Inserts
'; $tabellen_fertig=($restore['table_ready']>0) ? $restore['table_ready']:'0'; $to_do= ($restore['anzahl_tabellen']>0) ? $restore['anzahl_tabellen']:$lang['unknown']; if($restore['anzahl_tabellen']>0) $aus[]=sprintf($lang['restore_tables_completed'],$tabellen_fertig,$to_do); else $aus[]=sprintf($lang['restore_tables_completed0'],$tabellen_fertig); $done=number_format($restore['eintraege_ready'],0,",","."); $to_do=number_format($restore['anzahl_eintraege'],0,",","."); if ($restore['anzahl_eintraege']>0) $aus[]=sprintf($lang['restore_run1'],$done,$to_do); else $aus[]=sprintf($lang['restore_run0'],$done); $aus[]=sprintf($lang['restore_run2'],$restore['actual_table']); $aus[]=$lang['progress_over_all'].'
'; //Fortschrittsbalken $prozentbalken=(round($prozent,0)*3); if ($restore['anzahl_eintraege']>0) { $aus[]= ''; if ($prozentbalken>=3) $aus[]= ''; $aus[]= '' .'
 '.(number_format($prozent,2,",",".")).' %
'; } else $aus[]= ' '.$lang['unknown_number_of_records'].'

'; //Speed-Anzeige $fw=($config['maxspeed']==$config['minspeed']) ? 300 : round(($restore['anzahl_zeilen']-$config['minspeed'])/($config['maxspeed']-$config['minspeed'])*300,0); $aus[]='
'; $aus[]='
'; $aus[]='Speed
'.$restore['anzahl_zeilen'].'
'; $aus[]=''; $aus[]='
'; $aus[]=''; $aus[]='
'; $aus[]=''; $aus[]=''; $aus[]='
'.$config['minspeed'].''.$config['maxspeed'].'
'; //Status-Text $aus[]= '

'.zeit_format(time()-$restore['xtime']).', '.$restore['aufruf'].' pages'; //, speed '.$anzahl_zeilen; $aus[]= ($fmp>0) ? ', file '.$restore['part'] : ''; $aus[]= ($restore['errors']>0) ? ', '.$restore['errors'].' errors' : ''; $aus[]= '

'; $restore['summe_eintraege']+=$eingetragen; //Zeitanpassung if($config['direct_connection']==1) { if ($dauer<$restore['max_zeit']) { $restore['anzahl_zeilen']=$restore['anzahl_zeilen']*$config['tuning_add']; } else { $restore['anzahl_zeilen']=$restore['anzahl_zeilen']*$config['tuning_sub']; } $restore['anzahl_zeilen']=round($restore['anzahl_zeilen'],0); if($config['minspeed']>0) {if ($restore['anzahl_zeilen']<$config['minspeed']) $restore['anzahl_zeilen']=$config['minspeed'];} if($config['maxspeed']>0) {if($restore['anzahl_zeilen']>$config['maxspeed']) $restore['anzahl_zeilen']=$config['maxspeed'];} } $page_parameter='offset='.$restore['offset'].'&aufruf='.$restore['aufruf'].'&actual_table='.$restore['actual_table']; $page_parameter.="&filename=".urlencode($restore['filename'])."&kind=".$restore['kind']."&xtime=".$restore['xtime']; $page_parameter.= "&table_ready=".$restore['table_ready']."&eintraege_ready=".$restore['eintraege_ready']; $page_parameter.= "&anzahl_tabellen=".$restore['anzahl_tabellen']."&anzahl_eintraege=".$restore['anzahl_eintraege']; $page_parameter.= "&actual_fieldcount=".$restore['actual_fieldcount']."&part=".$restore['part']; $page_parameter.= "&anzahl_zeilen=".$restore['anzahl_zeilen']; $page_parameter.= "&summe_eintraege=".$restore['summe_eintraege']."&do_it=".$restore['do_it']."&err=".$restore['errors']; $page_parameter.= "&erw_ins=".$restore['erweiterte_inserts']."&flag=".$restore['flag']; } else { if(($restore['part']=="") || ($restore['table_ready']==$restore['anzahl_tabellen'] && $restore['eintraege_ready']==$restore['anzahl_eintraege']) || (isset($restore["EOB"])) ) { // Uff, geschafft! Jetzt darf die Leitung wieder abkuehlen. :-) $restore['xtime']=time()-$restore['xtime']; WriteLog("Restore '".$restore['filename']."' finished in ".zeit_format($restore['xtime'])."."); $aus[]=$lang['restore_total_complete']."
"; $aus[]= sprintf($lang['restore_complete'],$restore['table_ready']).'
'; $aus[]= sprintf($lang['restore_complete2'],number_format($restore['eintraege_ready'],0,",",".")); $aus[]= '

'.zeit_format($restore['xtime']).", ".$restore['aufruf']." pages

"; if($restore['errors']>0) $aus[]='

Es sind '.$restore['errors'].' Fehler aufgetreten: ansehen

'; $aus[]= "   "; $aus[]= "   "; $RestoreFertig=1; } else { //Multipart-Restore $nextfile=NextPart($restore['filename']); if(!file_exists($config['paths']['backup'].$nextfile)) { $done=number_format($restore['eintraege_ready'],0,",","."); $to_do=number_format($restore['anzahl_eintraege'],0,",","."); $aus[]= '

'.$lang['restore'].'

'; $aus[]= sprintf($lang['restore_db'],$databases['db_actual'],$config['dbhost']); $aus[]= '

Multipart-Backup: Missing File \''.$nextfile.'\' !

'; $aus[]=sprintf($lang['restore_run1'],$done,$to_do); $aus[]=sprintf($lang['restore_run2'],$restore['actual_table']); $aus[]= '

'.zeit_format(time()-$restore['xtime']).', '.$restore['aufruf'].' pages'; //, speed '.$anzahl_zeilen; $aus[]= ($fmp>0) ? ', file '.$restore['part'] : ''; $aus[]= ($restore['errors']>0) ? ', '.$restore['errors'].' errors' : ''; $aus[]= '

'.((isset($restore["EOB"])) ? "EOB":""); //$aus[]='
'.print_r($restore['protokoll'],true).'
'; } else { //Selbstaufruf mit nächstem File $page_parameter="offset=0&aufruf=".$restore['aufruf']."&actual_table=".$restore['actual_table']; $page_parameter.= "&filename=".urlencode($nextfile)."&kind=".$restore['kind']."&xtime=".$restore['xtime']; $page_parameter.= "&table_ready=".$restore['table_ready']."&eintraege_ready=".$restore['eintraege_ready']; $page_parameter.= "&anzahl_tabellen=".$restore['anzahl_tabellen']."&anzahl_eintraege=".$restore['anzahl_eintraege']; $page_parameter.= "&actual_fieldcount=".$restore['actual_fieldcount']."&part=".++$restore['part']; $page_parameter.= "&anzahl_zeilen=".$restore['anzahl_zeilen']; $page_parameter.= "&summe_eintraege=".$restore['summe_eintraege']."&do_it=".$restore['do_it']."&err=".$restore['errors']; $page_parameter.= "&erw_ins=".$restore['erweiterte_inserts']."&flag=".$restore['flag']; } } } } else $aus[]=$fpath.$restore['filename']." : ".$lang['file_open_error']; //===================================================================== //================= Anzeige =========================================== //===================================================================== //Seite basteln $svice=(isset($_GET['svice'])) ? $_GET['svice'] : 0; //DEBUGGER $debugausgabe=""; $manuell=0; //$debugausgabe="
".$page_parameter; $pagefooter=($RestoreFertig==1) ? MSDFooter() : ''; if($svice==1) $pagefooter.='
'.$config_array.'
'.$database_array.'
'.$dump_array.'
'.$restore_array.'
'; $aus=array_merge($aus_header,$aus); if($frames==1) { $js_aufruf_automatisch=($page_parameter=="") ? ">" : "onload=\"restart_restore()\">"; $js_aufruf_manuell=($page_parameter=="") ? ">" : '>

'; $s="\n"; $pageheader=''.$meta.'MySqlDump'.$s.' parent.msd_ausgabe.location.href="./work/log/out.html";'; } else { $pageheader=''.$meta.'MySqlDump'; $js_aufruf_automatisch=''; $js_aufruf_manuell=''; $selbstaufruf=($page_parameter=="") ? "" : (($manuell==0) ? $js_aufruf_automatisch : $js_aufruf_manuell); $complete_page=$pageheader.(($aus!="") ? implode("\n",$aus) : "").$debugausgabe.$selbstaufruf.$pagefooter; // und raus echo $complete_page; flush(); } ?>