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); } } //die($restore["filename"]); // 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 if ($restore["compressed"]) { //$fp = gzopen ($fpath.$restore["filename"], "r"); $statusline=gzgets($restore["filehandle"],40960); //gzclose ($fp); } else { //$fp = fopen ($fpath.$restore["filename"], "r"); $statusline=fgets($restore["filehandle"],500); //fclose ($fp); } $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"]); } // Wenn GZ-Komprimierung aus ist, koennen wir mit Hilfe der Filegroesse // ausrechnen, wieviel Prozent der Datei fertig sind. // Bei GZ=1 geht es nicht, weil sich der Offset auf die ungepackte Groesse // bezieht und somit nicht ins Verhältnis zur Dateigroesse gestellt werden kann. 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; //print_r($restore);echo "
"; $dauer=0; WHILE ( ($a<$restore["anzahl_zeilen"] ) && (!$restore["fileEOF"]) && ($dauer<$restore["max_zeit"]) ) { $sql_command=get_sqlbefehl(); if($sql_command!="") $res=mysql_query($sql_command,$config["dbconnection"]); // Bei MySQL-Fehlern sofort abbrechen und Info ausgeben $meldung=mysql_error($config["dbconnection"]); if ($meldung!="") { //Errorlog("RESTORE",$databases["db_actual"],$sql_command,$meldung); //$restore["errors"]++; ///die($meldung."
-------
$sql_command"); } $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"]); if (!$restore["fileEOF"]) { $restore["aufruf"]++; if (!$restore["compressed"]) $prozent=($restore["offset"]*100)/$filegroesse; else { if ($restore["anzahl_eintraege"]>0) $prozent=$restore["eintraege_ready"]*100/$restore["anzahl_eintraege"]; else $prozent=0; } if ($prozent>100) $prozent=100; $aus[]= '

'.$lang["restore"].'

'; if($aus1!="") $aus[]= '
'.$aus1.'

'; $aus[]= $lang["restore_db"].$databases["db_actual"].$lang["restore_db1"].$config["dbhost"].$lang["restore_db2"].'
Backup-File: '.$restore["filename"].' '; if($fmp>0) $aus[]= '
Multipart File '.$restore["part"].''; $aus[]= '

'; if ($restore["table_ready"]>0) $aus[]= $restore["table_ready"]-1; else $aus[]= '0'; if ($restore["anzahl_tabellen"]!=-1) $aus[]= ' '.$lang["of"].' '.$restore["anzahl_tabellen"].' '; $aus[]= $lang["restore_complete"].$lang["restore_run1"].number_format($restore["eintraege_ready"],0,",",".").' '; if ($restore["anzahl_eintraege"]>0) $aus[]= $lang["of"].' '.(number_format($restore["anzahl_eintraege"],0,",",".")).' '; $prozentbalken=(round($prozent,0)*3); $aus[]= $lang["restore_run2"].'
'; $aus[]= $lang["restore_run3"].$restore["actual_table"].$lang["restore_run4"].'
'.$lang["progress_over_all"].': '; //Fortschrittsbalken if ($restore["anzahl_eintraege"]>0) { $aus[]= ''; if ($prozentbalken>=3) $aus[]= ''; $aus[]= '' .'
 '.(number_format($prozent,2,",",".")).' %
'; } else $aus[]= ' unknown count 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"]; } else { if(($restore["part"]=="") || ($restore["table_ready"]==$restore["anzahl_tabellen"] && $restore["eintraege_ready"]==$restore["anzahl_eintraege"])) { // 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"].'

'; $aus[]= $lang["restore_db"].'`'.$databases["db_actual"].'`'.$lang['restore_db1'].'`'.$config["dbhost"].'`'.$lang['restore_db2']; $aus[]= $lang["restore_total_complete"]."
"; $aus[]= '
'.$restore["table_ready"].''. $lang["restore_complete"]."
"; $aus[]= ''.(number_format($restore["eintraege_ready"],0,",",".")).' '.$lang['restore_run2'].'
'; $aus[]= '

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

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

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

'; } else { //Multipart-Restore $nextfile=NextPart($restore["filename"]); if(!file_exists($config["paths"]["backup"].$nextfile)) { $aus[]= '

'.$lang["restore"].'

'; $aus[]= $lang["restore_db"]; $aus[]= '

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

'; $aus[]= ''.(number_format($restore["eintraege_ready"],0,",",".")).' '.$lang['restore_run2'].'
'; $aus[]= '

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

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

'.$lang['errors_occured'].': '.$lang['view'].'

'; } 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"]; } } } } else $aus[]=$fpath.$restore["filename"]." : ".$lang["file_open_error"]; //===================================================================== //================= Anzeige =========================================== //===================================================================== //Seite basteln //DEBUGGER $debugausgabe=""; //$debugausgabe="
".$page_parameter; $sc=headline(); if($config["interface_browser_ie"]) { $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'.$sc; $pagefooter=''; $js_aufruf_automatisch=''; $js_aufruf_manuell=''; $selbstaufruf=($page_parameter=="") ? "" : $js_aufruf_automatisch; $complete_page=$pageheader.(($aus!="") ? implode("\n",$aus) : "").$debugausgabe.$selbstaufruf.$pagefooter; // und raus echo $complete_page; flush(); } ?>