09. august 2008 - 14:42
Der er
3 kommentarer og
1 løsning
Lave jævnligt backup
Hejsa!
Denne hører måske også under PHP, men nu prøver vi her ;o)
Jeg søger en funktion (måske et script), der kan tage en backup i form af sql.sql e.l.
Hvis der findes et PHP script kan jeg bare få scriptet besøgt vha. cronjob
09. august 2008 - 16:26
#2
Fandt selv:
<?
$backup_structure=TRUE;
$backup_data=TRUE;
$empty_table=FALSE;
$drop_table=TRUE;
function write2file($filename,$content){
$handle=fopen($filename, 'w');
// Write $somecontent to our opened file.
fwrite($handle, $content);
//echo "Ba";
fclose($handle);
//echo "$filename has been created";
}
function backupstructure($tablename){
$ress = mysql_query("describe `".$tablename."`");
$a.="CREATE TABLE `".$tablename."` (\n";
while ($rows = mysql_fetch_row($ress))
{
//foreach ($rows as $rowval)
if ($rows)
{
// echo $rowval .' | ';
if(strlen($rows[4])==0){
$row4="";
}else{
$row4="default '$rows[4]'";
}
if($rows[3]=="PRI"){
$primarykey="PRIMARY KEY (`$rows[0]`)";
}
$a .="`$rows[0]` $rows[1] $rows[5] $row4,\n";
}
}
$a.=$primarykey."\n);";
return $a;
}
function backup($table){
global $con;
$a ="";
$sql= ("select * from $table");
$result = mysql_query($sql) or die("SQL ERROR:<hr>".$sql);
while($rs = mysql_fetch_object($result)) {
$b = ("insert into `$table` values (");
foreach($rs as $tmp1 => $key){
$key=str_replace("\n","<br>",$key);
$key=str_replace("\r","<br>",$key);
$b.= "'".addslashes($key)."',";
}
$a.= substr($b,0,strlen($b)-1).");\n";
}
mysql_free_result($result);
$a."\n";
return $a;
}
$con = @mysql_connect('xxxxx', 'xxxxxx', 'xxxxxx') or die("<center><b>Connection Error</b></center>");
$current_database = 'xxxxx';
$trs = mysql_list_tables($current_database,$con);
$tables=array();
for($i=0; $i < mysql_num_rows($trs); $i++) {
$output.="\n\n-- backup af ".mysql_tablename($trs,$i)."\n\n";
if($empty_table==TRUE){
$output.="TRUNCATE TABLE `".mysql_tablename($trs,$i)."`;\n";
}
if($drop_table==TRUE){
$output.="DROP TABLE IF EXISTS `".mysql_tablename($trs,$i)."`;\n";
}
if($backup_structure==TRUE){
$output.=backupstructure(mysql_tablename($trs,$i))."\n\n";
}
if($backup_data==TRUE){
$output.= backup(mysql_tablename($trs,$i));
}
}
//echo $output;
$filename="backups/db_backup_".date("Y-m-d").".sql";
write2file($filename,$output);
?>
Men smid et svar og du skal få point ;o)