首頁 >後端開發 >php教程 >備份mysql資料的php程式碼

備份mysql資料的php程式碼

WBOY
WBOY原創
2016-07-25 08:45:50874瀏覽
return intval($file_size/(1024*1024)) ." MB" ;}
  1. #####################
  2. //設定
  3. ####################
  4. //定義備份目錄的名稱
  5. define('BACKUP_DIR', './myBackups' ) ;
  6. // 定義資料庫憑證
  7. define('HOST', 'localhost' ) ;
  8. define('USER', 'testd!b' ) ;
  9. define('PASSWORD', 'k^$2y4n9 @#VV' ) ;
  10. define('DB_NAME', 'test123') ;
  11. /*
  12. 定義sql檔案的檔案名稱
  13. 如果您打算將檔案上傳到Amazon的S3服務,請只用小寫字母
  14. */
  15. $fileName = 'mysqlbackup- -'。日期('d-m-Y') 。 '@'.date('h.i.s').'.sql' ;
  16. // 設定執行時間限制
  17. if(function_exists('max_execution_time')) {
  18. if( ini_get('max_execution_time') > 0 ) set_time_limit(0) ;
  19. }
  20. #########################
  21. //設定結束
  22. #### #######################
  23. // 檢查目錄是否已建立並具有適當的權限
  24. if (!file_exists( BACKUP_DIR)) mkdir(BACKUP_DIR , 0700) ;
  25. if (!is_writable(BACKUP_DIR)) chmod(BACKUP_DIR , 0700) ; “.htaccess”文件,它將限制對備份目錄的直接存取。
  26. $content = '拒絕所有人';
  27. $file = new SplFileObject(BACKUP_DIR . '/.htaccess', "w") ;
  28. $file->fwrite($content) ;
  29. $mysqli = new mysqli(HOST , USER , PASSWORD , DB_NAME) ;
  30. if (mysqli_connect_errno())
  31. {
  32. printf("連線失敗: %s", my_5%); 🎜> exit();
  33. }
  34. // 介紹訊息
  35. $return .= "--n";
  36. $return .= "-- 一個Mysql備份系統n";
  37. $return .= "--n";
  38. $return .= '-- 已建立匯出: ' .日期(「年/月/日」)。 ' 在 ' 。日期(“h:i”)。 "nnn";
  39. $return = "--n";
  40. $return .= "-- 資料庫:" 。資料庫名稱。 "n";
  41. $return .= "--n";
  42. $return .= "-- ----------------------- --- ---------------------------n";
  43. $return .= "-- ------- --- ----------------------------------------------- ------n";
  44. $return . = '設定自動提交= 0 ;' ."n" ;
  45. $return .= '設定FOREIGN_KEY_CHECKS=0 ;' ."n" ;
  46. $tables = array() ;
  47. // 探索該資料庫有哪些表
  48. $result = $mysqli->query('SHOW TABLES' ) ;
  49. // 循環遍歷「$result」並將內容放入陣列
  50. while ($row = $result->fetch_row())
  51. {
  52. $tables[] = $row[0 ] ;
  53. }
  54. //循環遍歷各個表
  55. foreach($tables as $table)
  56. {
  57. //取得各個表的內容
  58. $result = $mysqli-> ;查詢('SELECT * FROM'.$table);
  59. // 取得每個表的欄位(列)數
  60. $num_fields = $mysqli->field_count ;
  61. // 新增表格資訊
  62. $return .= "--n" ;
  63. $return .= '-- 表`' 的表結構。 $表。 '``'。 "n" ;
  64. $return .= "--n" ;
  65. $return.= '如果存在則刪除表 `'.$table.'`;' 。 「n」;
  66. // 取得表格shema
  67. $shema = $mysqli->query('SHOW CREATE TABLE '.$table) ;
  68. // 提取表shema
  69. $tableshema = $shema - > fetch_row() ;
  70. // 將table-shema 附加到程式碼
  71. $return.= $tableshema[1].";" 。 「nn」;
  72. // 循環遍歷每個表格行
  73. while($rowdata = $result->fetch_row())
  74. {
  75. // 準備將資料插入表的程式碼
  76. $return .= 'INSERT INTO `'.$table .'` VALUES ( ' ;
  77. //提取每行資料
  78. for($i=0; $i {
  79. $return .= '"'.$rowdata[$i] . ""," ;
  80. }
  81. // 讓我們刪除最後一個逗號
  82. $return = substr("$return ", 0, -1) ;
  83. $return .= ");" ."n" ;
  84. }
  85. $return .= "nn" ;
  86. }
  87. // 關閉連線
  88. $mysqli->close() ;
  89. $return .= 'SET FOREIGN_KEY_CHECKS = 1 ; '。 “n”;
  90. $return .= '提交; '。 "n" ;
  91. $return .= 'SET AUTOCOMMIT = 1 ; '。 「n」;
  92. //$file = file_put_contents($fileName , $return) ;
  93. $zip = new ZipArchive() ;
  94. $resOpen = $zip->open(BACKUP_DIR . '/' . $fileName.".zip" , ZipARCHIVE::CREATE) ;
  95. if( $ resOpen ){
  96. $zip->addFromString( $fileName , "$return" ) ;
  97. }
  98. $zip->close() ;
  99. $fileSize = get_file_size_unit(filesize(BACKUP_DIR . "/". $fileName . '.zip')) ;
  100. $message =

    備份完成,


  101. 存檔的名稱為: $檔名它的檔案大小是:$fileSize。
  102. 此 zip 檔案無法透過網頁瀏覽器存取,因為它儲存在受保護的目錄中。
  103. 強烈建議將此備份傳輸到另一個檔案系統,使用您最喜歡的 FTP 用戶端下載檔案。
  104. msg;
  105. 回顯$message;
  106. // 在 file-size 之後附加適當的 Unit 的函數。
  107. function get_file_size_unit($file_size){
  108. switch (true) {
  109. case ($file_size/1024 return intval($file_size ) ." Bytes" ;
  110. ) ." Bytes;
  111. case ($file_size/1024 >= 1 && $file_size/(1024*1024) return intval($file_size/1024) ." KB" ;
  112. break;
  113. break;
  114. break;
  115. break;
break;
break; break; break;
break;
break;值:
}
複製代碼


mysql、php
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn