-
- #####################
- //設定
- ####################
- //定義備份目錄的名稱
- define('BACKUP_DIR', './myBackups' ) ;
- // 定義資料庫憑證
- define('HOST', 'localhost' ) ;
- define('USER', 'testd!b' ) ;
- define('PASSWORD', 'k ^$2y4n9 @#VV' ) ;
- define('DB_NAME', 'test123' ) ;
- /*
- 定義sql 檔案的檔案名稱
- 如果您打算將檔案上傳到Amazon S3 服務,只使用小寫字母
- */
- $fileName = 'mysqlbackup--' 。日期('d-m-Y') 。 '@'.date('h.i.s').'.sql' ;
- // 設定執行時間限制
- if(function_exists('max_execution_time')) {
- if( ini_get('max_execution_time') > 0 ) set_time_limit(0) ;
- }
-
- ##########################
-
- //設定結束
-
- #############################
-
- // 檢查是否目錄已建立並具有適當的權限
- if (!file_exists(BACKUP_DIR)) mkdir(BACKUP_DIR , 0700) ;
- if (!is_writable(BACKUP_DIR)) chmod(BACKUP_DIR , 0700) ;建立一個“.htaccess”文件,它將限制對備份目錄的直接存取。
- $content = 'deny from all' ;
- $file = new SplFileObject(BACKUP_DIR . '/.htaccess' , "w") ;
- $file->fwrite($content) ;
-
- $mysqli = new mysqli(HOST , USER , PASSWORD , DB_NAME) ;
- if (mysqli_connect_errno())
- {
- printf("連線失敗: %s", my_5%); 🎜> exit();
- }
- // 介紹資訊
- $return .= "-- n";
- $return .= "-- Mysql 備份系統n";
- $ return .= "--n";
- $return .= '-- 建立匯出: ' .日期(「年/月/日」)。 ' 在 ' 。日期(“h:i”)。 "nnn";
- $return = "--n";
- $return .= "-- 資料庫:" 。資料庫名稱。 "n";
- $return .= "--n";
- $return .= "-- ---------------------- - --------------------------n";
- $return .= "-- ---------- - -----------------------------------------n";
- $return . = '設定自動提交= 0 ;' ."n" ;
- $return .= '設定FOREIGN_KEY_CHECKS=0 ;' ."n" ;
- $tables = array() ;
- // 探索此資料庫有哪些表
- $result = $mysqli->query('SHOW TABLES' ) ;
- //循環遍歷「$result」並將內容放入陣列
- while ($row = $result- >fetch_row())
- {
- $tables[] = $row[0] ;
- }
- //循環遍歷每個表
- foreach($tables as $table)
- {
- //取得每個表的內容
- $result = $mysqli->query('SELECT * FROM '. $table) ;
- // 取得每個表的欄位(列)數
- $num_fields = $mysqli->field_count ;
- // 新增表格資訊
- $return . = "--n" ;
- $return .= '-- 表`' 的表格結構。 $表。 '``'。 "n" ;
- $return .= "--n" ;
- $return.= '如果存在則刪除表 `'.$table.'`;' 。 "n" ;
- // 取得表格shema
- $shema = $mysqli->query('SHOW CREATE TABLE '.$table) ;
- // 提取表shema
- $tableshema = $shema ->fetch_row() ;
- // 將table-shema 附加到程式碼
- $return.= $tableshema[1].";" 。 "nn" ;
- // 循環遍歷每個表格行
- while($rowdata = $result->fetch_row())
- {
- // 準備將資料插入表的程式碼
- $return .= 'INSERT INTO `'.$table .'` VALUES ( ' ;
- //提取每行資料
- for($i=0; $i {
- $return .= '"'.$rowdata[$i] . ""," ;
- }
- // 讓我們刪除最後一個逗號
- $return = substr(" $return ", 0, -1) ;
- $return .= ");" ."n" ;
- }
- $return .= "nn" ;
- }
- //關閉連接
- $mysqli->close() ;
- $return . = '設定FOREIGN_KEY_CHECKS = 1 ; '。 "n" ;
- $return .= '提交 ; '。 "n" ;
- $return .= 'SET AUTOCOMMIT = 1 ; '。 "n" ;
- //$file = file_put_contents($fileName , $return) ;
- $zip = new ZipArchive() ;
- $resOpen = $zip->open(BACKUP_DIR . '/' . $fileName.".zip" , ZipARCHIVE::CREATE) ;
- if( $resOpen ){
- $zip->addFromString( $fileName , "$return" ) ;
- }
- $zip->close() ;
- $fileSize = get_file_size_unit(filesize(BACKUP_DIR . "/". $fileName . '.zip')) ;
- $message =
備份已完成,
- 存檔的名稱為: $檔名它的檔案大小是:$fileSize。
- 此 zip 檔案無法透過網頁瀏覽器存取,因為它儲存在受保護的目錄中。
- msg;
- echo $message;
-
- // 函數在 file-size 之後附加適當的 Unit 。
- function get_file_size_unit($file_size){
- switch (true) {
- case ($file_size/1024 return intval($file_size ) 。 " 位元組" ;
- 中斷;
- case ($file_size/1024 >= 1 && $file_size/(1024*1024) return intval($file_size/1024) ." KB " ;
- break;
- 預設值:
- return intval($file_size/(1024*1024)) ." MB" ;
- }
- }
-
-
複製代碼
|
PHP、MySQL
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
-
2024-10-22 09:46:29
-
2024-10-13 13:53:41
-
2024-10-12 12:15:51
-
2024-10-11 22:47:31
-
2024-10-11 19:36:51
-
2024-10-11 15:50:41
-
2024-10-11 15:07:41
-
2024-10-11 14:21:21
-
2024-10-11 12:59:11
-
2024-10-11 12:17:31