我有一个脚本,可以使用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以获得gzip压缩的转储。
一切正常,但如果转储失败,我将永远不会在$ output中收到错误消息。如果gzip失败,那么我会收到一条错误消息。
我可以使用将存储错误消息的文件并使用两个exec()而不是管道来使其正常工作,但问题是如何在不使用文件和使用管道的情况下获取MySQLdump和gzip的错误消息。
有任何想法吗?
预先谢谢你。