php定时备份数据库数据,导出sql文件

<?php
//无论客户端是否关闭浏览器,下面的代码都将得到执行。
ignore_user_abort(true);set_time_limit(0);
//function write_txt(){
ini_set("max_execution_time", "180");//避免数据量过大,导出不全的情况出现。

$host="127.0.0.1";//数据库地址
$dbname="apiadmin";//这里配置数据库名
$username="root";//用户名
$passw="root";//这里配置密码

$filename=date("Y-m-d_H-i-s")."-".$dbname.".sql";
header("Content-disposition:filename=".$filename);//所保存的文件名
header("Content-type:application/octetstream");
header("Pragma:no-cache");
header("Expires:0");
//备份数据
$i   =   0;
$crlf="\r\n";
global     $dbconn;
$dbconn   =   mysql_connect($host,$username,$passw);//数据库主机,用户名,密码
$db   =   mysql_select_db($dbname,$dbconn);
mysql_query("SET NAMES 'utf8'");
$tables =mysql_list_tables($dbname,$dbconn);
$num_tables   =   @mysql_numrows($tables);
print   "-- filename=".$filename;
while($i   <   $num_tables)
{
    $table=mysql_tablename($tables,$i);
    print   $crlf;
    echo   get_table_structure($dbname,   $table,   $crlf).";$crlf$crlf";
    //echo   get_table_def($dbname,   $table,   $crlf).";$crlf$crlf";
    echo   get_table_content($dbname,   $table,   $crlf);
    $i++;
}
//}
function get_table_structure($db,$table,$crlf)
{
    global   $drop;
    $schema_create   =   "";
    if(!empty($drop)){ $schema_create   .=   "DROP TABLE IF EXISTS `$table`;$crlf";}
    $result   =mysql_db_query($db,   "SHOW CREATE TABLE $table");
    $row=mysql_fetch_array($result);
    $schema_create   .= $crlf."-- ".$row[0].$crlf;
    $schema_create   .= $row[1].$crlf;
    Return $schema_create;
}


//获得表内容
function   get_table_content($db, $table,   $crlf)
{
    $schema_create   =   "";
    $temp   =   "";
    $result   =   mysql_db_query($db,   "SELECT   *   FROM   $table");
    $i   =   0;
    while($row   =   mysql_fetch_row($result))
    {
        $schema_insert   =   "INSERT INTO `$table` VALUES   (";
        for($j=0;   $j<mysql_num_fields($result);$j++)
        {
            if(!isset($row[$j]))
                $schema_insert   .=   " NULL,";
            elseif($row[$j]   !=   "")
                $schema_insert   .=   " '".addslashes($row[$j])."',";
            else
                $schema_insert   .=   " '',";
        }
        $schema_insert   =   ereg_replace(",$", "",$schema_insert);
        $schema_insert   .=   ");$crlf";
        $temp   =   $temp.$schema_insert   ;
        $i++;
    }
    return   $temp;
}

//usleep适用于php5.0以上,定时
function do_cron(){usleep(1);write_txt();}

while(1){do_cron();}
?>

猜你喜欢

转载自blog.csdn.net/adminyan/article/details/80929630