PHP能夠一鍵導出MYSQL備份文件,並壓縮存放,儘管phpMyAdmin有這功能,不過若你本身開發網站或者是爲別人寫CMS,你不該該要求別人用你程序的時候再去另外用phpMyAdmin備份MYSQL,這應該是你CMS中的一個功能,那麼PHP如何實現一鍵備份MYSQL數據,這裏是指把MYSQL內容所有導出成SQL文件,而後壓縮SQL,介紹兩種方法以下:php
第一種:mysql
<?php $username = "root";//你的MYSQL用戶名 $password = "";//密碼 $hostname = "localhost";//MYSQL服務器地址 $dbname = "cars";//數據庫名 $dumpfname = $dbname . "_" . date("Y-m-d_H-i-s").".sql"; $command = "C:\\xampp\\mysql\\bin\\mysqldump --add-drop-table --host=$hostname --user=$username "; if ($password) $command.= "--password=". $password ." "; $command.= $dbname; $command.= " > " . $dumpfname; system($command); // 壓縮成ZIP文件 $zipfname = $dbname . "_" . date("Y-m-d_H-i-s").".zip"; $zip = new ZipArchive(); if($zip->open($zipfname,ZIPARCHIVE::CREATE)) { $zip->addFile($dumpfname,$dumpfname); $zip->close(); } if (file_exists($zipfname)) { header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename='.basename($zipfname)); flush(); readfile($zipfname); exit; } ?>
上述代碼可保存成一個PHP文件,如mysqlbak.php,注意,此文件必須有寫權限。爲了使用方便,你能夠在後臺給此文件一個連接,須要導出MYSQL時,你只需點擊一下就執行備份導出操做。sql
第二種方法:不須要寫權限,但不壓縮SQL文件,代碼以下:數據庫
<?php ob_start(); $username = "root"; $password = ""; $hostname = "localhost"; $dbname = "test"; $command = "C:\\xampp\\mysql\\bin\\mysqldump --add-drop-table --host=$hostname --user=$username "; if ($password) $command.= "--password=". $password ." "; $command.= $dbname; system($command); $dump = ob_get_contents(); ob_end_clean(); header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename='.basename($dbname . "_" . date("Y-m-d_H-i-s").".sql")); flush(); echo $dump; exit(); ?>
兩種方法你能夠選用一種,一樣可將第二種方法保存成mysqlbak.php文件,在後臺給個連接,用着方便。服務器