0) ? $config['minspeed'] : 50); $dump['dump_encoding']= (isset($_POST['dump_encoding'])) ? urldecode($_POST['dump_encoding']):''; if (isset($_GET['select_dump_encoding'])) { // Erstaufruf -> encoding auswerten include_once('./inc/functions_sql.php'); get_sql_encodings(); $encodingline=$config['mysql_possible_character_sets'][$_GET['select_dump_encoding']]; $encoding=explode(' ',$encodingline); $dump['dump_encoding']=isset($encoding[0]) ? $encoding[0]:$encodingline; } $mp2=array('Bytes','Kilobytes','Megabytes','Gigabytes'); $cancelurl='dump.php?cancel=1&part='.$dump['part'].'&backupdatei='.urlencode($dump['backupdatei']).'&backupdateistructure='.urlencode($dump['backupdatei_structure']); $aus2=$page_parameter=$debugausgabe=$a=''; $dump['tabellen_gesamt']=0; if($cancel==1) { //Abbruch durch Benutzer //Wildcard erzeugen $wildcard=substr($dump['backupdatei'],0,strlen($databases['db_actual'])+17); $wildcard2=$dump['backupdatei_structure']; echo $pageheader.'

Abruch durch Benutzer

Der Backupvorgang wurde unterbrochen.

'; echo 'Folgende angefangene Backupdateien wurden gelöscht:

'; echo $wildcard.'*
'.$wildcard2; echo ''; exit; } FillMultiDBArrays(); if($databases['db_actual_tableselected']!='' && $config['multi_dump']==0) { $dump['tblArray']=explode('|',$databases['db_actual_tableselected']); $tbl_sel=true; $msgTbl=sprintf($lang['nr_tables_selected'],count($dump['tblArray'])); } //Zeitzähler aktivieren $dump['max_zeit']=intval($config['max_execution_time']*$config['time_buffer']); $dump['startzeit']=time(); $xtime=(isset($_POST['xtime'])) ? $_POST['xtime']:time(); $dump['countdata']= (!empty($_POST['countdata'])) ? $_POST['countdata'] : 0; $dump['aufruf']= (!empty($_POST['aufruf'])) ? $_POST['aufruf'] : 0; MSD_mysql_connect($dump['dump_encoding']); $flipped = array_flip($databases['Name']); $dump['tables']=Array(); $dump['records']=Array(); $dump['totalrecords']=0; for($ii=0;$ii0) { for ($i=0;$i<$num_tables;$i++) { $row=mysql_fetch_array($tabellen); if($config['optimize_tables_beforedump']==1 && $dump['table_offset']==-1) mysql_query('OPTIMIZE `'.$row['Name'].'`'); if (isset($tbl_sel)) { if (in_array($row['Name'],$dump['tblArray'])) { $dump['tables'][]=$databases['Name'][$dump['dbindex']].'|'.$row['Name']; $dump['records'][]=$databases['Name'][$dump['dbindex']].'|'.$row['Rows']; $dump['totalrecords']+=$row['Rows']; } } elseif ($databases['praefix'][$dump['dbindex']]!='' && !isset($tbl_sel)) { if (substr($row['Name'],0,strlen($databases['praefix'][$dump['dbindex']]))==$databases['praefix'][$dump['dbindex']]) { $dump['tables'][]=$databases['Name'][$dump['dbindex']].'|'.$row['Name']; $dump['records'][]=$databases['Name'][$dump['dbindex']].'|'.$row['Rows']; $dump['totalrecords']+=$row['Rows']; } } else { $dump['tables'][]=$databases['Name'][$dump['dbindex']].'|'.$row['Name']; $dump['records'][]=$databases['Name'][$dump['dbindex']].'|'.$row['Rows']; // Get nr of records -> need to do it this way because of incorrect returns when using InnoDBs $sql_2="SELECT count(*) as `count_records` FROM `".$databases['Name'][$dump['dbindex']]."`.`".$row['Name']."`"; $res2=@mysql_query($sql_2); $row2=mysql_fetch_array($res2); $row['Rows']=$row2['count_records']; $dump['totalrecords']+=$row['Rows']; } } } } $num_tables=count($dump['tables']); if($config['optimize_tables_beforedump']==1 && $dump['table_offset']==-1) $out.=sprintf($lang['nr_tables_optimized'],$num_tables).'
'; $dump['data']=''; $dump['structure']=''; $dump['dbindex']=(isset($_POST['dbindex'])) ? $_POST['dbindex'] :$flipped[$databases['multi'][0]]; //Ausgaben-Header bauen $aus_header[]= PicCache($relativ_path); $aus_header[]= headline('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['error'].': '.sprintf($lang['dump_notables'],$databases['Name'][$dump['dbindex']]).'

'; if(!$config['multi_dump']==1) { echo $pageheader.implode("\n",$aus); echo ''; exit(); } } else { if ($dump['table_offset']==-1) { // File anlegen, da Erstaufruf new_file(); $dump['table_offset']=0; // jetzt kanns losgehen flush(); } else { // 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; clearstatcache(); $sz=byte_output(@filesize($config['paths']['backup'].$mpdatei)); $out.= $lang['file'].' '.$mpdatei.' ('.$sz.') '.$lang['dump_successful'].'
'; } } else { clearstatcache(); $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; $out.='

'; new_file(); } $aktuelle_tabelle=$dump['table_offset']; 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,0); } 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) { $mudbs=''; for($i=0;$i '; else $mudbs.= ''.$databases['multi'][$i].'   '; } } 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'].'
'; $aus[]=($config['multi_dump']==1) ? $lang['db'].': '.$mudbs : $lang['db'].': '.$databases['Name'][$dump['dbindex']].''; $aus[]=(($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['charset'].': '.$dump['dump_encoding'].''; $aus[]='
'.$lang['filesize'].': '.byte_output($dump['filesize']).'

'.$lang['gzip_compression'].' '; $aus[]=($config['compression']==1) ? $lang['activated'] : $lang['not_activated']; $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); $dump['zeilen_total']=intval($row->anzahl); if ($dump['zeilen_total']>0) $fortschritt=intval((100*$dump['zeilen_offset'])/$dump['zeilen_total']); else $fortschritt=100; $aus[]= $lang['saving_table'].''.($dump['table_offset']+1).' '.$lang['of'].' '.sizeof($dump['tables']).'
' .$lang['actual_table'].': '.$table.'

' .$lang['progress_table'].':
'; $aus[]= '' .'' .'' .''; if ($dump['anzahl_zeilen']+$dump['zeilen_offset']>=$dump['zeilen_total']) { $eintrag=$dump['zeilen_offset']+1; $zeilen_gesamt=$dump['zeilen_total']; if ($zeilen_gesamt==0) $eintrag=0; } else { $zeilen_gesamt=$dump['zeilen_offset']+$dump['anzahl_zeilen']; $eintrag=$dump['zeilen_offset']+1; } $aus[]= '' .'
 '.($fortschritt).'%
'.$lang['entry'].' '.number_format($eintrag,0,',','.').' '.$lang['upto'].' ' .number_format(($zeilen_gesamt),0,',','.').' '.$lang['of'].' ' .number_format($dump['zeilen_total'],0,',','.').'
'; $dump['tabellen_gesamt']=(isset($dump['tables'])) ? count($dump['tables']) : 0; $noch_zu_speichern=$dump['totalrecords']-$dump['countdata']; $prozent= ($dump['totalrecords']>0) ? round(((100*$noch_zu_speichern)/$dump['totalrecords']),0) : 100; if ($noch_zu_speichern==0 || $prozent>100) $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[]= ''; $aus[]= ''; $aus[]= '
'.$config['minspeed'].''.$config['maxspeed'].'
'; //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) { 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']++; } else { //Backup fertig $dump['data']="\n".$mysql_commentstring.' EOB - End of backup\n\n\n'; WriteToDumpFile(); ExecuteCommand('a'); chmod($config['paths']['backup'].$dump['backupdatei'],0755); if($config['multi_part']==1) { $out.='
'; $dateistamm=substr($dump['backupdatei'],0,strrpos($dump['backupdatei'],'part_')).'part_'; $dateiendung=($config['compression']==1) ? '.sql.gz':'.sql'; clearstatcache(); 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'].'
'; } } else $out.='
'.$lang['file']. ' '.$dump['backupdatei'].' ('.byte_output(filesize($config['paths']['backup'].$dump['backupdatei'])).')' .''.$lang['dump_successful'].'
'; $backup_ready=1; $xtime=time()-$xtime; $aus=Array(); $aus[]= '
'; if($config['multi_dump']==1) { WriteLog('Dump \''.$dump['backupdatei'].'\' finished.'); WriteLog('Multidump: '.count($databases['multi']).' Databases 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(); $out.='
'; $aus[]= ''.$lang['done'].'
'; if($config['multi_dump']==1) { $aus[]= sprintf($lang['multidump'],count($databases['multi'])).': '; $aus[]=''.implode(', ',$databases['multi']).''; //$out=''; } else { $aus[]= '
'.sprintf($lang['dump_endergebnis'],$num_tables,number_format($dump['countdata'],0,',','.')); } if($dump['errors']>0) $aus[]=sprintf($lang['dump_errors'],$dump['errors']); $aus[]=''.$out.'
' .'

'.zeit_format($xtime).', '.$dump['aufruf'].' pages'.$aus2.'

' .str_repeat(' ',60); $aus[]= '
'; $aus[]= '   '; $aus[]= '   

'; $DumpFertig=1; } } //===================================================================== //================= Anzeige =========================================== //===================================================================== //Seite basteln $config_array=(isset($config)) ? 'CONFIG
'.@print_r($config,true).'
': ''; $database_array=(isset($database)) ? 'DATABASE
'.@print_r($database,true).'
': ''; $dump_array=(isset($dump)) ? 'DUMP
'.@print_r($dump,true).'
': ''; $aus=array_merge($aus_header,$aus); $dump['xtime']=$xtime; if ($DumpFertig!=1) $page_parameter=get_page_parameter($dump); $pagefooter=($DumpFertig==1) ? '

Daniel Schlichtholz & Steffen Kamper - Infoboard: '.$config['homepage'].'

' : ''; $pagefooter.='
'; $js_aufruf_automatisch=$page_parameter.''; $selbstaufruf=($page_parameter=='') ? '' : $js_aufruf_automatisch; $complete_page=$pageheader.implode("\n",$aus).$selbstaufruf.$pagefooter; echo $complete_page; ?>