前台一键备份数据库+PHP实现方式
生活随笔
收集整理的這篇文章主要介紹了
前台一键备份数据库+PHP实现方式
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、實現思路
1、單擊備份按鈕傳遞參數到后臺,ajax實現:
function backupDatabase(){var back = 'backupDatabase';$.ajax({url:'system_backup.php?do=backupDatabase',type:'POST',data:back,dataType:'json',beforeSend:function(){interval=window.setInterval(function(){var text = $("#backupstate2").html();if(text.length<4){$("#backupstate2").html('數據庫備份中.'); }var text = $("#backupstate2").html();if (text.length < 9){$("#backupstate2").html(text + '.'); } else {$("#backupstate2").html('數據庫備份中.'); }}, 200);},success:function(data){if(data.msg=='1'){$("#backupstate2").html('數據備份完成!'); alert('備份成功.點擊確定后,請立刻單擊下載備份數據庫!');$("#db_url").val(data.url);window.clearInterval(interval);}else{alert(data.msg); $("#backupstate2").html(''); window.clearInterval(interval);}}}); }2、后臺接受參數后進行數據庫備份
header("Content-Type: text/html; charset=utf-8"); require_once('../configs/config.php'); require_once("../models/websurvey/webSurvey.class.php"); SysUser::authIsLogin("../login.php"); $user = new SysUser(); if(!empty($_GET['do'])){$do = $_GET['do'];switch($do){case "backupDatabase":$data = $_POST['back'];if('backupDatabase' == $data){// 設置SQL文件保存文件名 $cfg_dbname = 'asteriskcdrdb';$filename=date("Ymd",time())."-".$cfg_dbname.".sql"; // 獲取當前頁面文件路徑,SQL文件就導出到指定文件夾內// $savePath = './Public/upload/DB/';$savePath = '../upload/DB/';if(!file_exists($savePath)){mkdir($savePath,0777,true);}$tmpFile = $savePath.$filename;fopen($tmpFile, "r");chmod($tmpFile,0777);/* //刪除之前備份的數據$dh=opendir($savePath); if($dh){while ($file=readdir($dh)) { if($file!="." && $file!="..") { $fullpath=$savePath."/".$file; if(!is_dir($fullpath)) { unlink($fullpath); }} } closedir($dh);} //刪除之前備份的數據*/// 用MySQLDump命令導出數據庫$dbhost = '***.***.***.***';//主機IP地址$cfg_dbuser = 'root';//用戶名$cfg_dbpwd = '******';//密碼$bool_dump = exec("mysqldump -h$dbhost -u$cfg_dbuser -p$cfg_dbpwd --default-character-set=utf8 $cfg_dbname > ".$tmpFile);if(0 == $bool_dump){$bool_tar = exec("tar -zcvPf /var/spool/asterisk/monitor/system/backup/db.tar /var/spool/asterisk/monitor/upload/DB/$filename");if(0 == $bool_tar){$arr = json_encode(array('msg'=>1,'url'=>$filename));echo $arr;}else{$arr = json_encode(array('msg'=>'備份失敗,請聯系管理員!'));echo $arr;}}}exit;}default:break;} }三、效果圖:
1、備份前
2、備份中
3、備份成功
4、下載備份數據庫
四、注意
1、注意:不同的框架實現的方式不同,但都是大同小異。
2、注意php的exec()函數,執行成功后的返回值是0。
3、除了exec()外,還有system()、passthru()、shell_exec()、執行運算符:反引號(“)等等,根據自己的需要進行選擇。
總結
以上是生活随笔為你收集整理的前台一键备份数据库+PHP实现方式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 通过jQuery给select元素的op
- 下一篇: 搜索算法(三)--DFS/BFS求解宝岛