【发布时间】:2019-04-25 14:20:57
【问题描述】:
我正在使用 php 创建一个mysqldump,然后希望在此之后下载该文件并最终删除。
我担心的是,PHP 不会在 readfile($backup_file); 之前等待 system($command); 完成,并且 unlink($backup_file); 将在一切完成之前删除,尤其是对于非常大的数据库。
我知道 PHP 是单线程的,system($command) 会发出一个退出代码,但是这个退出代码是仅仅意味着 PHP 已经传递了要处理的命令还是意味着 PHP 将等待 MYSQL 完成?
代码如下:
$backup_file = $backupDir.$devDB."-".date("Y-m-d-H-i").'.gz';
$command = "mysqldump --opt -h $DbHost -u$DbUser -p$DbPassword $devDB | gzip > $backup_file";
system($command);
if (file_exists($backup_file)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="'.basename($backup_file).'"');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($backup_file));
readfile($backup_file);
unlink($backup_file);
exit;
【问题讨论】:
-
它会等到
system返回。