php 备份和还原数据库

ignore_user_abort();//关掉浏览器,PHP脚本也可以继续执行.
set_time_limit(0);// 通过set_time_limit(0)可以让程序无限制的执行下去
$interval=60*30;// 每隔半小时运行
do{
//这里是你要执行的代码 添加备份php或者还原的php的脚本,
sleep($interval);// 等待5分钟
}while(true);

一、备份数据库并下载到本地【db_backup.php】

  1. <?php
  2. // 设置SQL文件保存文件名
  3. $filename=date("Y-m-d_H-i-s")."-".$cfg_dbname.".sql";
  4. // 所保存的文件名
  5. header("Content-disposition:filename=".$filename);
  6. header("Content-type:application/octetstream");
  7. header("Pragma:no-cache");
  8. header("Expires:0");
  9. // 获取当前页面文件路径,SQL文件就导出到此文件夹内
  10. $tmpFile = (dirname(__FILE__))."\\".$filename;
  11. // 用MySQLDump命令导出数据库
  12. exec("mysqldump -u$cfg_dbuser -p$cfg_dbpwd --default-character-set=utf8 $cfg_dbname > ".$tmpFile);
  13. $file = fopen($tmpFile, "r"); // 打开文件
  14. echo fread($file,filesize($tmpFile));
  15. fclose($file);
  16. exit;
  17. ?>
<?php
// 设置SQL文件保存文件名
$filename=date("Y-m-d_H-i-s")."-".$cfg_dbname.".sql";
// 所保存的文件名
header("Content-disposition:filename=".$filename);
header("Content-type:application/octetstream");
header("Pragma:no-cache");
header("Expires:0");
// 获取当前页面文件路径,SQL文件就导出到此文件夹内
$tmpFile = (dirname(__FILE__))."\\".$filename;
// 用MySQLDump命令导出数据库
exec("mysqldump -u$cfg_dbuser -p$cfg_dbpwd --default-character-set=utf8 $cfg_dbname > ".$tmpFile);
$file = fopen($tmpFile, "r"); // 打开文件
echo fread($file,filesize($tmpFile));
fclose($file);
exit;
?>

二、还原数据库【db_restore.php】

  1. <form id="form1" name="form1" method="post" action="">
  2. 【数据库SQL文件】:<input id="sqlFile" name="sqlFile" type="file" />
  3. <input id="submit" name="submit" type="submit" value="还原" />
  4. </form>
  5. <?php
  6. // 我的数据库信息都存放到config.php文件中,所以加载此文件,如果你的不是存放到该文件中,注释此行即可;
  7. require_once((dirname(__FILE__).'/../../include/config.php'));
  8. if ( isset ( $_POST['sqlFile'] ) )
  9. {
  10. $file_name = $_POST['sqlFile']; //要导入的SQL文件名
  11. $dbhost = $cfg_dbhost; //数据库主机名
  12. $dbuser = $cfg_dbuser; //数据库用户名
  13. $dbpass = $cfg_dbpwd; //数据库密码
  14. $dbname = $cfg_dbname; //数据库名
  15. set_time_limit(0); //设置超时时间为0,表示一直执行。当php在safe mode模式下无效,此时可能会导致导入超时,此时需要分段导入
  16. $fp = @fopen($file_name, "r") or die("不能打开SQL文件 $file_name");//打开文件
  17. mysql_connect($dbhost, $dbuser, $dbpass) or die("不能连接数据库 $dbhost");//连接数据库
  18. mysql_select_db($dbname) or die ("不能打开数据库 $dbname");//打开数据库
  19. echo "<p>正在清空数据库,请稍等....<br>";
  20. $result = mysql_query("SHOW tables");
  21. while ($currow=mysql_fetch_array($result))
  22. {
  23. mysql_query("drop TABLE IF EXISTS $currow[0]");
  24. echo "清空数据表【".$currow[0]."】成功!<br>";
  25. }
  26. echo "<br>恭喜你清理MYSQL成功<br>";
  27. echo "正在执行导入数据库操作<br>";
  28. // 导入数据库的MySQL命令
  29. exec("mysql -u$cfg_dbuser -p$cfg_dbpwd $cfg_dbname < ".$file_name);
  30. echo "<br>导入完成!";
  31. mysql_close();
  32. }
  33. ?>
上一篇:PHP API接口签名验证


下一篇:实时监听input输入框value值的变化