每晚我使用以下命令备份我的数据库。我每晚都把这个备份文件放在异地,但我不知道什么时候开始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);
答案 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}}