亚州欧美精品suv_日韩视频在线精品_国产成人电影在线_双性男生被老师摁着调教_91色噜噜狠狠色婷婷_免费黄片软件下载免费_中文字幕乱码无码人妻系列蜜桃_激情在线网站_美女被操网站_国内不卡一二三四区

PHP代碼實(shí)現(xiàn)數(shù)據(jù)庫(kù)定時(shí)備份和還原

更新時(shí)間:2023-03-21 編輯:創(chuàng)始人 關(guān)注人次:0 新格搜索


ignore_user_abort();//關(guān)掉瀏覽器,PHP腳本也可以繼續(xù)執(zhí)行.set_time_limit(0);// 通過(guò)set_time_limit(0)可以讓程序無(wú)限制的執(zhí)行下去$interval=60*30;// 每隔半小時(shí)運(yùn)行do{//這里是你要執(zhí)行的代碼 添加備份php或者還原的php的腳本,sleep($interval);// 等待5分鐘}while(true);一、備份數(shù)據(jù)庫(kù)

ignore_user_abort();//關(guān)掉瀏覽器,PHP腳本也可以繼續(xù)執(zhí)行.
set_time_limit(0);// 通過(guò)set_time_limit(0)可以讓程序無(wú)限制的執(zhí)行下去
$interval=60*30;// 每隔半小時(shí)運(yùn)行
do{
//這里是你要執(zhí)行的代碼 添加備份php或者還原的php的腳本,
sleep($interval);// 等待5分鐘
}while(true);

一、備份數(shù)據(jù)庫(kù)并下載到本地【db_backup.php】

Php代碼

<?php   // 設(shè)置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");   // 獲取當(dāng)前頁(yè)面文件路徑,SQL文件就導(dǎo)出到此文件夾內(nèi)   $tmpFile = (dirname(__FILE__))."\\".$filename;   // 用MySQLDump命令導(dǎo)出數(shù)據(jù)庫(kù)   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;   ?>

二、還原數(shù)據(jù)庫(kù)【db_restore.php】

Php代碼

<form id="form1" name="form1" method="post" action="">   【數(shù)據(jù)庫(kù)SQL文件】:<input id="sqlFile" name="sqlFile" type="file" />   <input id="submit" name="submit" type="submit" value="還原" />   </form>   <?php   // 我的數(shù)據(jù)庫(kù)信息都存放到config.php文件中,所以加載此文件,如果你的不是存放到該文件中,注釋此行即可;   require_once((dirname(__FILE__).'/../../include/config.php'));   if ( isset ( $_POST['sqlFile'] ) )   {   $file_name = $_POST['sqlFile']; //要導(dǎo)入的SQL文件名   $dbhost = $cfg_dbhost; //數(shù)據(jù)庫(kù)主機(jī)名   $dbuser = $cfg_dbuser; //數(shù)據(jù)庫(kù)用戶名   $dbpass = $cfg_dbpwd; //數(shù)據(jù)庫(kù)密碼   $dbname = $cfg_dbname; //數(shù)據(jù)庫(kù)名   set_time_limit(0); //設(shè)置超時(shí)時(shí)間為0,表示一直執(zhí)行。當(dāng)php在safe mode模式下無(wú)效,此時(shí)可能會(huì)導(dǎo)致導(dǎo)入超時(shí),此時(shí)需要分段導(dǎo)入   $fp = @fopen($file_name, "r") or die("不能打開SQL文件 $file_name");//打開文件   mysql_connect($dbhost,<mark>6來(lái)源gaodaimacom搞#^代%!碼網(wǎng)</mark><strong>搞gaodaima代碼</strong> $dbuser, $dbpass) or die("不能連接數(shù)據(jù)庫(kù) $dbhost");//連接數(shù)據(jù)庫(kù)   mysql_select_db($dbname) or die ("不能打開數(shù)據(jù)庫(kù) $dbname");//打開數(shù)據(jù)庫(kù)   echo "<p>正在清空數(shù)據(jù)庫(kù),請(qǐng)稍等....<br>";   $result = mysql_query("SHOW tables");   while ($currow=mysql_fetch_array($result))   {   mysql_query("drop TABLE IF EXISTS $currow[0]");   echo "清空數(shù)據(jù)表【".$currow[0]."】成功!<br>";   }   echo "<br>恭喜你清理MYSQL成功<br>";   echo "正在執(zhí)行導(dǎo)入數(shù)據(jù)庫(kù)操作<br>";   // 導(dǎo)入數(shù)據(jù)庫(kù)的MySQL命令   exec("mysql -u$cfg_dbuser -p$cfg_dbpwd $cfg_dbname < ".$file_name);   echo "<br>導(dǎo)入完成!";   mysql_close();   }   ?>


網(wǎng)上摘抄2:

前段時(shí)間主機(jī)提供商服務(wù)器發(fā)生了問(wèn)題,讓人郁悶的事是將數(shù)據(jù)恢復(fù)到了一星期以前,導(dǎo)致好些博客數(shù)據(jù)丟失。
痛定思痛,想出了一個(gè)自動(dòng)備份網(wǎng)站數(shù)據(jù)的方法。
1. 在服務(wù)器上實(shí)現(xiàn)數(shù)據(jù)轉(zhuǎn)成SQL
為了實(shí)現(xiàn)服務(wù)器上的數(shù)據(jù)轉(zhuǎn)成SQL腳本,需要在服務(wù)器上放一個(gè)PHP文件,這個(gè)PHP文件的目的是連接到數(shù)據(jù)庫(kù),然后將數(shù)據(jù)讀取出來(lái),最后再轉(zhuǎn)成SQL。例如,我們放一個(gè)tosql.php文件在服務(wù)器htdocs目錄,內(nèi)容如下:

<?phperror_reporting(E_ALL & ~E_NOTICE);include_once 'application/configs/dbconfig.php';include_once 'application/includes/db.class.php';header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');header('Last-Modified: ' . gmdate( 'D, d M Y H:i:s') . ' GMT');header('Cache-Control: no-store, no-cache, must-revalidate');header('Cache-Control: post-check=0, pre-check=0', false);header('Pragma: no-cache');header("Content-type: text/plain; charset=utf-8");$db = new db();$db->connect($config['db']['host'], $config['db']['user'], $config['db']['pass']);$db->select_db($config['db']['name']);$db->query('set names utf8');$sqldump = '';//  我的表名都以tbs_開頭$sql = "SHOW TABLE STATUS WHERE name like 'tbs_%'";$query = $db->query($sql);while($table = $db->fetch_array($query)) {    $sqldump .= sql_dumptable($table['Name']);}echo $sqldump;  function sql_dumptable($table) {  global $db;    $tabledump = "DROP TABLE IF EXISTS $table;\n";  $createtable = $db->query("SHOW CREATE TABLE $table");  $create = $db->fetch_array($createtable);  $tabledump .= $create[1].";\n\n";  $rows = $db->query("SELECT * FROM $table");  $numfields = $db->num_fields($rows);  $numrows = $db->num_rows($rows);  while ($row = $db->fetch_array($rows))   {    $comma = "";    $tabledump .= "INSERT INTO $table VALUES(";    for($i = 0; $i < $numfields; $i++){      $tabledump .= $comma."'".mysql_escape_string($row[$i])."'";      $comma = ",";    }    $tabledump .= ");\n";  }  $tabledump .= "\n";  return $tabledump;}

2. 在本地新增一個(gè)PHP文件,目的是從服務(wù)器上獲取SQL基本,然后寫入到本地文件。這個(gè)PHP文件取名為nextdata.php,內(nèi)容如下:

<?php$filename = dirname(__FILE__) . '/data/tbs_' . date('YmdHis', mktime() + 3600 * 8) . '.sql';$sqldump = file_get_contents('http://www.nextphp.com/tosql.php');file_put_contents($filename, $sqldump);

3. 實(shí)現(xiàn)定時(shí)備份
本地使用的是Windows操作系統(tǒng),可以使用計(jì)劃任務(wù)定時(shí)的執(zhí)行備份任務(wù),這樣需要一個(gè)批處理文件。批處理文件名稱為nextdata.bat,內(nèi)如如下:

D:\wamp\bin\php\php5.3.5\php nextdata.php

經(jīng)過(guò)上述三個(gè)步驟后,我們的計(jì)劃任務(wù)就會(huì)定時(shí)的執(zhí)行服務(wù)器上的tosql.php文件,然后將其內(nèi)容寫入到本地,從而實(shí)現(xiàn)了數(shù)據(jù)庫(kù)的備份任務(wù)。

分享到微信
本文地址: http://radx.com.cn/a/news/chengxudaima/2023-03/show-663.html ,點(diǎn)擊鏈接地址復(fù)制。
上一篇:什么是域名劫持和域名污染 下一篇:修改百度在線編輯器(UEDITOR)自動(dòng)排版首行縮進(jìn)四個(gè)字符問(wèn)題

服務(wù)支持

我們珍惜您每一次在線咨詢,有問(wèn)必答;用專業(yè)的技術(shù),貼心的服務(wù),解答您的開發(fā)疑問(wèn)。

讓您真正感受到我們的服務(wù)態(tài)度和專業(yè)技術(shù)!