閱讀744 返回首頁    go 阿裏雲 go 技術社區[雲棲]


PHP導出MYSQL數據庫並壓縮

本文轉自IT擺渡網歡迎轉載,請標明出處
擺渡網

更多php文章請閱讀

php問題解決

  PHP可以一鍵導出MYSQL備份文件,並壓縮存放,盡管phpMyAdmin有這功能,不過若你自己開發網站或者是為別人寫CMS,你不應該要求別人用你程序的時候再去另外用phpMyAdmin備份MYSQL,這應該是你CMS中的一個功能,那麼PHP如何實現一鍵備份MYSQL數據,這裏是指把MYSQL內容全部導出成SQL文件,然後壓縮SQL,介紹兩種方法如下:

  第一種:

<?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文件,代碼如下:

<?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文件,在後台給個鏈接,用著方便。

最後更新:2017-08-21 17:03:12

  上一篇:go  想分智慧醫療這一杯羹,還需要看清其風險
  下一篇:go  php提醒 No input file specified錯誤解決方法