Mysqldump не пишет файл, но нет ошибки - PullRequest
0 голосов
/ 11 октября 2019

Я создал команду в приложении laravel, которая должна вызывать команду dumpmysql и содержимое gzip в файле.

другими словами, я получаю пароль пользователя БД и имя базы данных через класс \ Config и вызываю exec функцию php для этого (с классом Process Symfony):

$process = new Process(
    "mysqldump --user='%s' --password='%s' %s | gzip > %s",
     config("database.connections.$this->connection.username"),
     config("database.connections.$this->connection.password"),
     config("database.connections.$this->connection.database"),
     storage_path($filename)
)

try {
        $this->process->mustRun();
        $this->info('The backup has been proceed successfully.');
} catch (ProcessFailedException $exception) {
        $this->error('The backup process has been failed. : ' . $exception->getMessage());
}


Я проверил это в своей локальной среде (подсистема Linux на Windows - WSL) и в среде подготовки к выпуску (Debian), и это работает как прелесть. Но по неизвестной причине, когда я использую это на своем производственном сервере (который также является Debian), скрипт запускается без ошибок, но иногда у меня нет файла в конце. У меня был один или два раза файл, но 90% моих попыток завершились без ошибок, но без файла.

На этапе подготовки и производства необработанный вывод (не в архиве) представляет собой файл 1,6 ГБ, который становится сжатым файлом размером приблизительно 130 МБ. У меня достаточно дискового пространства в моей системе.

Буду признателен за любую помощь, потому что не смог найти объяснения. Я где-то читал, что оператор ">" может не работать с exec, но он работает в другой среде, поэтому я не думаю, что это может быть причиной.

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...