Как сказать, когда завершится mysqldump

Каждую ночь я делаю резервную копию своей базы данных, используя следующую команду. Я создаю ftp-файл этой резервной копии каждую ночь, но я не знаю, когда будет безопасно начинать сеанс 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);

2

Решение

Как насчет создания файла журнала резервного копирования?

$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);

РЕДАКТИРОВАТЬ:

PHP-код, выполняемый после passthru() срабатывает только после passthru() закончен.

Другая полезная информация заключается в том, что 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
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]