0) WriteLog('Start Multipart-Restore \''.$restore['filename'].'\''); else WriteLog('Start Restore \''.$restore['filename'].'\''); } 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; $restore['EOB']=false; //lock_table($restore['actual_table']); WHILE ( ($a<$restore['anzahl_zeilen'] ) && (!$restore['fileEOF']) && ($dauer<$restore['max_zeit']) && !$restore['EOB'] ) { $sql_command=get_sqlbefehl(); if($sql_command>'') { //WriteLog($sql_command); $meldung=''; $res=mysql_query($sql_command,$config['dbconnection']); if (!$res===false) { $anzsql=mysql_affected_rows($config['dbconnection']); // Anzahl der eingetragenen Datensaetze ermitteln (Indexaktionen nicht zaehlen) $command=strtoupper(substr($sql_command,0,7)); if ($command=='INSERT ') { $anzsql=mysql_affected_rows($config['dbconnection']); if($anzsql>0) { $restore['eintraege_ready']+=$anzsql; } } } // Bei MySQL-Fehlern sofort abbrechen und Info ausgeben $meldung=mysql_error($config['dbconnection']); if ($meldung!='') { if (strtolower(substr($meldung,0,15))=='duplicate entry') { ErrorLog('RESTORE',$databases['db_actual'],$sql_command,$meldung,1); $restore['notices']++; } else { if($config['stop_with_error']==0) { Errorlog("RESTORE",$databases['db_actual'],$sql_command,$meldung); $restore['errors']++; } else { Errorlog("RESTORE",$databases['db_actual'],$sql_command,'Restore failed: '.$meldung,0); SQLError($sql_command,$meldung); die(); } } } } $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 : '; $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[]='Backup-File: '.$restore['filename'].'
'; if($fmp>0) $aus[]= '
Multipart File '.$restore['part'].'
'; $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['notices']>0) ? ', '.$restore['notices'].' notices' : ''; $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'];} } if ($restore['fileEOF'] && $restore['part']==0) $restore['EOB']=true; if ($restore['EOB']) { // Uff, geschafft! Jetzt darf die Leitung wieder abkuehlen. :-) unset($aus); $aus=array(); $restore['xtime']=time()-$restore['xtime']; WriteLog("Restore '".$restore['filename']."' finished in ".zeit_format($restore['xtime'])."."); $aus[]=$lang['restore_total_complete']."
"; $aus[]=$lang['file'].': '.$restore['filename'].'

'; $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[]=$lang['errors'].': '.$restore['errors'].' » '.$lang['view'].'
'; if($restore['notices']>0) $aus[]=$lang['notices'].': '.$restore['notices'].' » '.$lang['view'].'
'; $aus[]= "
   "; $aus[]= "   "; $RestoreFertig=1; } else { if ($restore['fileEOF']) { //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[]= '

'.$lang['multi_part'].': '.$lang['file_missing'].' \''.$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) ? ', '.$lang['file'].' '.$restore['part'] : ''; $aus[]= ($restore['errors']>0) ? ', '.$restore['errors'].' errors' : ''; $aus[]= '

'.((isset($restore['EOB'])) ? "EOB":""); WriteLog('Restore unsuccessful: Cannot find Multipartfile \''.$nextfile.'\''); $RestoreFertig=1; } else { $restore['filename']=urlencode($nextfile); $restore['offset']=0; $restore['part']++; } } } } else $aus[]=$fpath.$restore['filename'].' : '.$lang['file_open_error']; //===================================================================== //================= Anzeige =========================================== //===================================================================== //Seite basteln //DEBUGGER $debugausgabe=''; $manuell=0; $pagefooter=($RestoreFertig==1) ? MSDFooter() : ''; if (is_array($aus_header)) $aus=array_merge($aus_header,$aus); $page_parameter=get_page_parameter($restore,'restore'); if ($RestoreFertig==1) $page_parameter=''; $pageheader=''.$meta.'MySqlDumper'.$page_parameter; $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; echo $complete_page; ?>