PHP exec ().Как получить сообщение об ошибке, когда команда использует канал? - PullRequest
0 голосов
/ 13 февраля 2019

У меня есть скрипт, который создает резервные копии с помощью 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 без использования файла и использования трубопровода..
Есть идеи?Заранее спасибо.

...