3 回答
TA贡献1829条经验 获得超7个赞
您可以使用该exec()
函数执行外部命令。
注意:在shell_exec()
和之间exec()
,我会选择第二个,它不会将输出返回给PHP脚本 - 不需要PHP脚本将整个SQL转储作为字符串:您只需要将其写入文件,这可以通过命令本身来完成。
该外部命令将:
mysqldump
用正确的参数打电话给并将输出重定向到文件。
例如 :
mysqldump --user=... --password=... --host=... DB_NAME > /path/to/output/file.sql
这意味着您的PHP代码如下所示:
exec('mysqldump --user=... --password=... --host=... DB_NAME > /path/to/output/file.sql');
当然,由您决定使用正确的连接信息,替换为...
那些。
TA贡献1820条经验 获得超9个赞
如果要创建备份以通过浏览器下载,也可以不使用文件来执行此操作。
php函数passthru()将直接将mysqldump的输出重定向到浏览器。在这个例子中,它也将被压缩。
亲:您不必处理临时文件。
Con:无法在Windows上运行。对巨大的数据集可能有限制。
<?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);
?>
添加回答
举报