3 回答

TA貢獻(xiàn)1829條經(jīng)驗 獲得超7個贊
您可以使用該exec()
函數(shù)執(zhí)行外部命令。
注意:在shell_exec()
和之間exec()
,我會選擇第二個,它不會將輸出返回給PHP腳本 - 不需要PHP腳本將整個SQL轉(zhuǎn)儲作為字符串:您只需要將其寫入文件,這可以通過命令本身來完成。
該外部命令將:
mysqldump
用正確的參數(shù)打電話給并將輸出重定向到文件。
例如 :
mysqldump --user=... --password=... --host=... DB_NAME > /path/to/output/file.sql
這意味著您的PHP代碼如下所示:
exec('mysqldump --user=... --password=... --host=... DB_NAME > /path/to/output/file.sql');
當(dāng)然,由您決定使用正確的連接信息,替換為...
那些。

TA貢獻(xiàn)1820條經(jīng)驗 獲得超9個贊
如果要創(chuàng)建備份以通過瀏覽器下載,也可以不使用文件來執(zhí)行此操作。
php函數(shù)passthru()將直接將mysqldump的輸出重定向到瀏覽器。在這個例子中,它也將被壓縮。
親:您不必處理臨時文件。
Con:無法在Windows上運行。對巨大的數(shù)據(jù)集可能有限制。
<?php
$DBUSER="user";
$DBPASSWD="password";
$DATABASE="user_db";
$filename = "backup-" . date("d-m-Y") . ".sql.gz";
$mime = "application/x-gzip";
header( "Content-Type: " . $mime );
header( 'Content-Disposition: attachment; filename="' . $filename . '"' );
$cmd = "mysqldump -u $DBUSER --password=$DBPASSWD $DATABASE | gzip --best";
passthru( $cmd );
exit(0);
?>
添加回答
舉報