include_once("inc/functions_dump.php");
include_once($config["files"]["parameter"]);
include_once("inc/mysql.php");
include_once("language/lang_".$config["language"].".php");
@TestWorkDir();
$pageheader='
'.$meta.'0)
{
for ($i=0;$i<$num_tables;$i++)
{
$erg=mysql_fetch_row($tabellen);
if($config["optimize_tables_beforedump"]==1 && $dump["table_offset"]==-1) {
//Tabelle optimieren
mysql_query("OPTIMIZE `$erg[0]`");
}
if (isset($tbl_sel))
{
if (in_array($erg[0],$dump["tblArray"])) $dump["tables"][]=$databases["Name"][$dump["dbindex"]].".".$erg[0];
}
elseif ($databases["praefix"][$dump["dbindex"]]>"" && !isset($tbl_sel))
{
echo "$erg[0] - ".$databases["praefix"][$dump["dbindex"]]."
";
if (substr($erg[0],0,strlen($databases["praefix"][$dump["dbindex"]]))==$databases["praefix"][$dump["dbindex"]]) $dump["tables"][]=$databases["Name"][$dump["dbindex"]].".".$erg[0];;
}
else $dump["tables"][]=$databases["Name"][$dump["dbindex"]].".".$erg[0];
}
}
else $aus_error[]= ''.$lang["error"].": ".$lang["dump_notables"].$databases["Name"][$dump["dbindex"]].$lang['dump_notables2'].'
';
}
$num_tables=count($dump["tables"]);
if($config["optimize_tables_beforedump"]==1 && $dump["table_offset"]==-1) $out.=''.$num_tables.' Tabellen wurden optimiert.
';
$dump["data"]="";
$dump["structure"]="";
$dump["dbindex"]=(isset($_GET["dbi"])) ? $_GET["dbi"] :$flipped[$databases["multi"][0]];
//Ausgaben-Header bauen
$aus_header[]= '';
$aus_header[]= 'Backup: '.(($config["multi_dump"]==1) ? "Multidump (".count($databases["multi"])." ".$lang["dbs"].")" : $lang["db"].': '.$databases["Name"][$dump["dbindex"]].(($databases["praefix"][$dump["dbindex"]]!="") ?' ('.$lang["withpraefix"].' '.$databases["praefix"][$dump["dbindex"]].')' : '')).'
';
if(isset($aus_error) && count($aus_error)>0) $aus_header=array_merge($aus_header,$aus_error);
if(count($dump["tables"])==0) {
//keine Tabellen gefunden
$aus[]=''.$lang['dump_notables'].$databases["Name"][$dump["dbindex"]].$lang['dump_notables2'].'
';
if($config["multi_dump"]==1) {
}
} else {
if ($dump["table_offset"]==-1) {
// File anlegen, da Erstaufruf
new_file();
$dump["table_offset"]=0; // jetzt kanns losgehen
flush();
}
// SQl-Befehle ermitteln
$dump["restzeilen"]=$dump["anzahl_zeilen"];
WHILE ( ($dump["table_offset"] < $num_tables) && ($dump["restzeilen"]>0) )
{
$table = substr($dump["tables"][$dump["table_offset"]],strpos($dump["tables"][$dump["table_offset"]],".")+1);
$adbname=substr($dump["tables"][$dump["table_offset"]],0,strpos($dump["tables"][$dump["table_offset"]],"."));
if($databases["Name"][$dump["dbindex"]]!=$adbname) {
//neue Datenbank
WriteLog("Dump '".$dump["backupdatei"]."' finished.");
ExecuteCommand("a");
if($config["multi_part"]==1) {
$out.=$lang['finished'].'
';
$dateistamm=substr($dump["backupdatei"],0,strrpos($dump["backupdatei"],"part_"))."part_";
$dateiendung=($config["compression"]==1)?".sql.gz":".sql";
for ($i=1;$i<($dump["part"]-$dump["part_offset"]);$i++) {
$mpdatei=$dateistamm.$i.$dateiendung;
$sz=byte_output(@filesize($config["paths"]["backup"].$mpdatei));
$out.= $lang["file"].'
'.$mpdatei.' ('.$sz.') '.$lang["dump_successful"].'
';
}
$out.='
';
} else {
$out.=$lang['finished'].': '.$dump["backupdatei"].' ('.byte_output(filesize($config["paths"]["backup"].$dump["backupdatei"])).")
";
}
if ($config["send_mail"]==1) DoEmail();
if($config["ftp_transfer"]==1) DoFTP();
if(isset($flipped[$adbname])) $dump["dbindex"]=$flipped[$adbname];
$dump["part_offset"]=$dump["part"]-1;
new_file();
}
$aktuelle_tabelle=$dump["table_offset"];
//echo "$adbname - $table
";
if ($dump["zeilen_offset"]==0)
{
if($config["minspeed"]>0) {
$dump["anzahl_zeilen"]=$config["minspeed"];
$dump["restzeilen"]=$config["minspeed"];
}
$dump["data"] .= get_def($adbname,$table);
$dump["structure"].=get_def($adbname,$table);
}
WriteToDumpFile();
get_content($adbname,$table);
$dump["restzeilen"]--;
if($config["memory_limit"]>0 && strlen($dump["data"])>$config["memory_limit"]) {
WriteToDumpFile();
}
}
/////////////////////////////////
// Anzeige - Fortschritt
/////////////////////////////////
if($config["multi_dump"]==1) {
$aus[]= '';
for($i=0;$i'.$databases["multi"][$i].' ';
else
$aus[]= ''.$databases["multi"][$i].' ';
if(strlen($a)>60) {$aus[]='
';$a="";}
}
$aus[]= '
';
}
if($config["multi_part"]==1) $aus[]= 'Multipart-Backup: '.$config["multipartgroesse1"].' '.$mp2[$config["multipartgroesse2"]].'
';
$aus[]= ''.$lang["dump_headline"].'
';
if($dump["kommentar"]) $aus[]= $lang['comment'].': '.$dump["kommentar"].'
';
if($config["multi_dump"]==1) $aus[]= $lang["db"].': '.$databases["Name"][$dump["dbindex"]].''.(($databases["praefix"][$dump["dbindex"]]!="") ?' ('.$lang["withpraefix"].' '.$databases["praefix"][$dump["dbindex"]].')' : '').'
';
if(isset($tbl_sel)) $aus[]= $msgTbl.'
';
if($config["multi_part"]==1)
{
$aus[]= 'Multipart-Backup File '.($dump["part"]-$dump["part_offset"]-1).'
';
$aus2=", ".($dump["part"]-1)." files";
}
$aus[]= $lang["dump_filename"]."".$dump["backupdatei"]."";
$aus[]= '
'.$lang['filesize'].': '.byte_output($dump["filesize"]).'
'.$lang["gzip_compression"].' ';
$aus[]= ($config["compression"]==1) ? $lang["activated"] : $lang["not_activated"];
$aus[]= '.
';
$aus[]='
';
$table = @substr($dump["tables"][$dump["table_offset"]],strpos($dump["tables"][$dump["table_offset"]],".")+1);
$adbname=@substr($dump["tables"][$dump["table_offset"]],0,strpos($dump["tables"][$dump["table_offset"]],"."));
$sql="SELECT COUNT(*) AS anzahl FROM `$table`";
$res=mysql_query($sql);
if ($res)
{
$row=mysql_fetch_object($res);
$gesamt=intval($row->anzahl);
if ($gesamt>0)
{
$fortschritt=round(((100*$dump["zeilen_offset"])/$gesamt),0);
if ($dump["anzahl_zeilen"]>=$gesamt) $fortschritt=100;
}
else $fortschritt=100;
$aus[]= $lang["saving_table"].''.($dump["table_offset"]+1).' '.$lang["of"].' '.sizeof($dump["tables"]).'
'
.$lang["actual_table"].': '.$table.'
'
.$lang["progress_table"].':
';
$aus[]= ''
.' | '
.' | '
.''.($fortschritt).'% | ';
if ($dump["anzahl_zeilen"]+$dump["zeilen_offset"]>=$gesamt)
{
$eintrag=$dump["zeilen_offset"]+1;
$zeilen_gesamt=$gesamt;
if ($zeilen_gesamt==0) $eintrag=0;
}
else
{
$zeilen_gesamt=$dump["zeilen_offset"]+$dump["anzahl_zeilen"];
$eintrag=$dump["zeilen_offset"]+1;
}
$aus[]= '
'
.''.$lang["entry"].' '.number_format($eintrag,0,",",".").' '.$lang["upto"].' '
.number_format(($zeilen_gesamt),0,",",".").' '.$lang["of"].' '
.number_format($gesamt,0,",",".").' |
';
$dump["tabellen_gesamt"]=(isset($dump["tables"])) ? count($dump["tables"]) : 0;
$noch_zu_speichern=$dump["tabellen_gesamt"]-$dump["table_offset"];
$prozent= ($dump["tabellen_gesamt"]>0) ? round(((100*$noch_zu_speichern)/$dump["tabellen_gesamt"]),0) : 100;
if ($noch_zu_speichern==0) $prozent=100;
$aus[]= '
'.$lang["progress_over_all"].':'
.''
.' | '
.' | '
.''.(100-$prozent).'% |
';
//Speed-Anzeige
$fw=($config["maxspeed"]==$config["minspeed"]) ? 300 : round(($dump["anzahl_zeilen"]-$config["minspeed"])/($config["maxspeed"]-$config["minspeed"])*300,0);
if($fw>300)$fw=300;
$aus[]= '
';
$aus[]= '';
$aus[]= 'Speed '.$dump["anzahl_zeilen"].' | ';
$aus[]= '';
$aus[]= '';
$aus[]= ' |
';
$aus[]= ''.$config["minspeed"].' | ';
$aus[]= ''.$config["maxspeed"].' | ';
$aus[]= '
|
';
//Status-Text
$aus[]= ''.zeit_format(time()-$xtime).', '.$dump["aufruf"].' pages'.$aus2;
$aus[]= ($dump["errors"]>0) ? ', '.$dump["errors"].' errors' : '';
$aus[]= '
';
$aus[]= ''.$out.'
';
}
//////////////////////////////////////
// Ende Anzeige
//////////////////////////////////////
WriteToDumpFile();
flush();
if(!isset($summe_eintraege)) $summe_eintraege=0;
if ($dump["table_offset"]<=$dump["tabellen_gesamt"])
{
$dauer=time()-($xtime+$dump["verbraucht"]);
$dump["verbraucht"]+=$dauer;
$summe_eintraege+=$dump["anzahl_zeilen"];
//Zeitanpassung
if($config["direct_connection"]==1) {
//echo "Zeitanpassung
dauer=$dauer max_zeit=$dump["max_zeit"] minspeed=$config["minspeed"] $config["maxspeed"]=$config["maxspeed"]";
if ($dauer<$dump["max_zeit"]) $dump["anzahl_zeilen"]=$dump["anzahl_zeilen"]*$config["tuning_add"];
else $dump["anzahl_zeilen"]=$dump["anzahl_zeilen"]*$config["tuning_sub"];
$dump["anzahl_zeilen"]=round($dump["anzahl_zeilen"],0);
if($config["minspeed"]>0) {if ($dump["anzahl_zeilen"]<$config["minspeed"]) $dump["anzahl_zeilen"]=$config["minspeed"];}
if($config["maxspeed"]>0) {if($dump["anzahl_zeilen"]>$config["maxspeed"]) $dump["anzahl_zeilen"]=$config["maxspeed"];}
}
$dump["aufruf"]++;
// Selbstaufruf starten
$page_parameter='table_offset='.$dump["table_offset"].'&zeilen_offset='.$dump["zeilen_offset"];
$page_parameter.='&countdata='.$dump["countdata"].'&part='.$dump["part"].'&part_offset='.$dump["part_offset"];
$page_parameter.='&backupdatei='.urlencode($dump["backupdatei"]).'&backupdateistructure='.urlencode($dump["backupdatei_structure"]);
$page_parameter.='&xtime='.$xtime.'&aufruf='.$dump["aufruf"].'&filename_stamp='.$dump["filename_stamp"];
$page_parameter.='&anzahl_zeilen='.$dump["anzahl_zeilen"].'&verbraucht='.$dump["verbraucht"].'&comment='.urlencode($dump["kommentar"]).'&dbi='.$dump["dbindex"].'&err='.$dump["errors"];
//WritePageParams($page_parameter);
}
else
{
//Backup fertig
// Zeitmessung wird beendet
ExecuteCommand("a");
if($config["multi_part"]==1) {
$out.=$lang['finished'].'
';
$dateistamm=substr($dump["backupdatei"],0,strrpos($dump["backupdatei"],"part_"))."part_";
$dateiendung=($config["compression"]==1)?".sql.gz":".sql";
for ($i=1;$i<($dump["part"]-$dump["part_offset"]);$i++) {
$mpdatei=$dateistamm.$i.$dateiendung;
$sz=byte_output(@filesize($config["paths"]["backup"].$mpdatei));
$out.= $lang["file"].'
'.$mpdatei.' ('.$sz.') '.$lang["dump_successful"].'
';
}
$out.='
';
} else {
$out.=$lang['finished'].': '.$dump["backupdatei"].' ('.byte_output(filesize($config["paths"]["backup"].$dump["backupdatei"])).")
";
}
$backup_ready=1;
$xtime=time()-$xtime;
$aus=Array();
$aus[]= "
";
if($config["multi_dump"]==1) {
WriteLog("Dump '".$dump["backupdatei"]."' finished.");
WriteLog("Multidump: ".count($databases["multi"])." Datenbases in ".zeit_format($xtime).".");
} else {
WriteLog("Dump '".$dump["backupdatei"]."' finished in ".zeit_format($xtime).".");
}
if ($config["send_mail"]==1) DoEmail();
if($config["ftp_transfer"]==1) DoFTP();
@unlink($config["paths"]["log"]."out.tmp");
$aus[]= $lang["done"]."
";
if($dump["errors"]>0) $aus[]='Es sind '.$dump["errors"].' Fehler aufgetreten: ansehen
';
if($config["multi_dump"]==1) {
$aus[]= $lang['multidump1'].count($databases["multi"]).$lang['multidump2']."
";
}
$aus[]= '
'.$lang["dump_endergebnis1"].''.$num_tables.''.$lang["dump_endergebnis2"]
.''.number_format($dump["countdata"],0,",",".").''.$lang["dump_endergebnis3"].'
'.$out.'
'
.''.zeit_format($xtime).', '.$dump["aufruf"].' pages'.$aus2.'
' //.$dump["fileoperations"].' Schreibzugriffe'
.str_repeat(" ",60).'
';
$aus[]= "
";
}
}
//=====================================================================
//================= Anzeige ===========================================
//=====================================================================
//Seite basteln
$aus=array_merge($aus_header,$aus);
//DEBUGGER
//$debugausgabe='
Aufruf:'.$dump["aufruf"].' Datensätze: '.$dump["countdata"].' Dateigrösse: '.$dump["filesize"].'
'.$page_parameter.' |
';
$manuell=0;
if($config["interface_browser_ie"]) {
$js_aufruf_automatisch=($page_parameter=="") ? ">" : "onload=\"restart_dump()\">";
$js_aufruf_manuell=($page_parameter=="") ? ">" : '>
';
$s="\n";
$pageheader=''.$meta.'MySqlDump'.$s.'
';
$complete_page=$pageheader.$debugausgabe.implode("\n",$aus).$pagefooter;
// und raus
WriteTempOut($out);
$f=fopen("work/log/out.html","w");
fwrite($f,$complete_page);
fclose($f);
flush();
echo '';
} else {
$pagefooter='