如何判断mysqldump何时完成

时间:2016-07-19 03:19:28

标签: php ftp backup mysqldump

每晚我使用以下命令备份我的数据库。我每晚都把这个备份文件放在异地,但我不知道什么时候开始ftp会话是安全的,因为我不知道转储需要多长时间。

是否有php告诉mysqldump何时完成 - 例如测试$filename是否仍在使用中,或者查询mysql是否正在进行转储?

提前致谢。

$command = "mysqldump -h " . DB_SERVER . " -u ". DB_USER ." -p". DB_PASS ." --add-drop-table --quick --set-gtid-purged=OFF " . DB_NAME . " > ". $filename; 

$result = passthru($command);

1 个答案:

答案 0 :(得分:0)

如何创建备份日志文件?

$command = "mysqldump -h " . DB_SERVER . " -u ". DB_USER ." -p". DB_PASS ." --add-drop-table --quick --set-gtid-purged=OFF " . DB_NAME . " > ". $filename; 
$result = passthru($command);

$file = fopen('backup-file-name', 'a'); // can specify full path
fwrite($file, date('M-d-Y h:i:s') . " -- backup finished \n");
fclose($file);

或类似的东西:

// open file and say it's in progress
$file = fopen('backup-file-name', 'w'); // can specify full path
fwrite($file, date('M-d-Y h:i:s') . " -- backup in progress \n");
fclose($file);

$command = "mysqldump -h " . DB_SERVER . " -u ". DB_USER ." -p". DB_PASS ." --add-drop-table --quick --set-gtid-purged=OFF " . DB_NAME . " > ". $filename; 
$result = passthru($command);

// open file and say that backup is done
$file = fopen('backup-file-name', 'w'); // can specify full path
fwrite($file, date('M-d-Y h:i:s') . " -- backup finished \n");
fclose($file);

编辑:

仅在passthru()完成后触发passthru()后执行的PHP代码。

另一个有用的信息是passthru()可以使用第二个参数return_var来返回命令的状态。

情侣笔记:

  • 0表示Unix命令成功返回状态。

  • passthru() $command_status = 'N/A'; $result = passthru($command, $command_status); // then check if $command_status value === 0 // maybe log the status of the command as well 通过引用返回值,因此请将声明的变量传递给函数。

示例:

{{1}}