У меня есть скрипт, который создает резервные копии с помощью CronJob:
$exec = "(set -e pipefail " . $mysqldump_path . "mysqldump -h{$hostname} -u{$username} --password={$password} {$database} {$table} --where=\"date >= '{$date} 00:00:00' AND date <= '{$date} 23:59:59'\" > {$destination} | gzip {$destination} 2>&1)";
$output = $returnVar = null;
exec($exec, $output, $returnVar);
if ($returnVar) {
$this->sendEmailIfDumpFailed($output);
if (file_exists($destination)) {
unlink($destination);
}
return false;
}
Я пытаюсь создать дамп, а затем направить вывод в gzip, чтобы получить дамп gzipped.Все работает нормально, но если дамп не удался, я никогда не получаю сообщение об ошибке в $ output.Если gzip не работает, я получаю сообщение об ошибке.Я могу заставить его работать хорошо, используя файл, в котором будет храниться сообщение об ошибке, и используя два exec () вместо канала, но вопрос в том, как получить сообщение об ошибке для MySQLdump и gzip без использования файла и использования трубопровода..
Есть идеи?Заранее спасибо.