生活随笔
收集整理的這篇文章主要介紹了
tp5 备份数据库
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
//讀取數(shù)據(jù)庫備份文件 public function index(){ path=RUNTIMEPATH.′mysql′;if(!isdir(path = RUNTIME_PATH.'mysql'; if(!is_dir( p a t h = R U N T I M E P ? A T H . ′ m y s q l ′ ; i f ( ! i s d ? i r ( path)){ mkdir($path); }
//scandir方法$arr = array();$data = scandir($path);foreach ($data as $value){if($value != '.' && $value != '..'){$arr[] = $value;}}rsort($arr);// dump($arr);die;$this->assign('list',$arr);return $this->fetch();// dump($arr);die;// return $arr;
}public function sc(){$get = input('param.name');$data = unlink(RUNTIME_PATH.'mysql/'.$get);if($get){$this->AjaxReturn(200,'成功');}else{$this->AjaxReturn(500,'失敗');}
}public function download()
{// $famlePath = $_GET['resum'];// $file_dir = ROOT_PATH . 'public' . DS . 'uploads' . '/' . "$famlePath"; // 下載文件存放目錄$get = input('param.name');$file_dir = RUNTIME_PATH.'mysql/'.$get;// 檢查文件是否存在if (! file_exists($file_dir) ) {$this->error('文件未找到');}else{// 打開文件$file1 = fopen($file_dir, "r");// 輸入文件標(biāo)簽Header("Content-type: application/octet-stream");Header("Accept-Ranges: bytes");Header("Accept-Length:".filesize($file_dir));Header("Content-Disposition: attachment;filename=" . $file_dir);ob_clean(); // 重點!!!flush(); // 重點!!!!可以清除文件中多余的路徑名以及解決亂碼的問題://輸出文件內(nèi)容//讀取文件內(nèi)容并直接輸出到瀏覽器echo fread($file1, filesize($file_dir));fclose($file1);exit();}
}
/** * 導(dǎo)出數(shù)據(jù)庫備份 * baikeliang * 2017-9-27 */ public function exportDatabase(){ header(“Content-type:text/html;charset=utf-8”); $path = RUNTIME_PATH.‘mysql/’; $database = config(‘database’)[‘database’]; //echo “運行中,請耐心等待… ”; $info = “-- ----------------------------\r\n”; $info .= “-- 日期:”.date(“Y-m-d H:i:s”,time())."\r\n"; info.="??MySQL?5.5.52?MariaDB:Database?".info .= "-- MySQL - 5.5.52-MariaDB : Database - ". i n f o . = " ? ? M y S Q L ? 5 . 5 . 5 2 ? M a r i a D B : D a t a b a s e ? " . database."\r\n"; $info .= “-- ----------------------------\r\n\r\n”; info.="CREATEDATAbaseIFNOTEXISTS‘".info .= "CREATE DATAbase IF NOT EXISTS `". i n f o . = " C R E A T E D A T A b a s e I F N O T E X I S T S ‘ " . database."DEFAULT CHARACTER SET utf8 ;\r\n\r\n"; $info .= "USE".$database."`;\r\n\r\n";
// 檢查目錄是否存在if(is_dir($path)){// 檢查目錄是否可寫if(is_writable($path)){//echo '目錄可寫';exit;}else{//echo '目錄不可寫';exit;chmod($path,0777);}}else{//echo '目錄不存在';exit;// 新建目錄mkdir($path, 0777, true);//chmod($path,0777);}// 檢查文件是否存在$file_name = $path.$database.'-'.date("Y-m-d",time()).'.sql';if(file_exists($file_name)){echo "<script>alert('數(shù)據(jù)備份文件已存在!');history.go(-1)</script>";exit;}file_put_contents($file_name,$info,FILE_APPEND);//查詢數(shù)據(jù)庫的所有表$result = Db::query('show tables');//print_r($result);exit;foreach ($result as $k=>$v) {//查詢表結(jié)構(gòu)$val = $v['Tables_in_'.$database];$sql_table = "show create table ".$val;$res = Db::query($sql_table);//print_r($res);exit;$info_table = "-- ----------------------------\r\n";$info_table .= "-- Table structure for `".$val."`\r\n";$info_table .= "-- ----------------------------\r\n\r\n";$info_table .= "DROP TABLE IF EXISTS `".$val."`;\r\n\r\n";$info_table .= $res[0]['Create Table'].";\r\n\r\n";//查詢表數(shù)據(jù)$info_table .= "-- ----------------------------\r\n";$info_table .= "-- Data for the table `".$val."`\r\n";$info_table .= "-- ----------------------------\r\n\r\n";file_put_contents($file_name,$info_table,FILE_APPEND);$sql_data = "select * from ".$val;$data = Db::query($sql_data);//print_r($data);exit;$count= count($data);//print_r($count);exit;if($count<1) continue;foreach ($data as $key => $value){$sqlStr = "INSERT INTO `".$val."` VALUES (";foreach($value as $v_d){$v_d = str_replace("'","\'",$v_d);$sqlStr .= "'".$v_d."', ";}//需要特別注意對數(shù)據(jù)的單引號進(jìn)行轉(zhuǎn)義處理//去掉最后一個逗號和空格$sqlStr = substr($sqlStr,0,strlen($sqlStr)-2);$sqlStr .= ");\r\n";file_put_contents($file_name,$sqlStr,FILE_APPEND);}$info = "\r\n";file_put_contents($file_name,$info,FILE_APPEND);}echo "<script>alert('數(shù)據(jù)備份完成!');history.go(-1)</script>";
}
總結(jié)
以上是生活随笔 為你收集整理的tp5 备份数据库 的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔 網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔 推薦給好友。