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

透過php備份mysql資料的程式碼

WBOY
發布: 2016-07-25 08:43:14
原創
845 人瀏覽過
PHP、MySQL
  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 = 'deny from all' ;
  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->query('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 . = '設定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. msg;
  104. echo $message;
  105. // 函數在 file-size 之後附加適當的 Unit 。
  106. function get_file_size_unit($file_size){
  107. switch (true) {
  108. case ($file_size/1024 return intval($file_size ) 。 " 位元組" ;
  109. 中斷;
  110. case ($file_size/1024 >= 1 && $file_size/(1024*1024) return intval($file_size/1024) ." KB " ;
  111. break;
  112. 預設值:
  113. return intval($file_size/(1024*1024)) ." MB" ;
  114. }
  115. }
複製代碼

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板