Symfony записывает вывод процесса в файл
Как записать вывод асинхронного процесса в файл. У меня есть следующий код в моем файле начальной загрузки phpunit:
$command = 'exec php ' . $kernel->getRootDir() . '/console '
. 'xxx:servicebus:start-services --env='
. $kernel->getEnvironment();
$servicebusCommand = new Symfony\Component\Process\Process($command);
$servicebusCommand->start();
Очевидно, что код запускает экземпляр сервисной шины, который прослушивает все входящие запросы к серверу. После запуска тестов запросы отправляются на сервисную шину, и она застревает там. Мне нужно увидеть вывод команды запуска servicebus, чтобы увидеть, что пошло не так.
Любая идея, как записать вывод процесса в какой-то файл журнала?
2 ответа
Вам нужно позвонить $servicebusCommand->getIncrementalErrorOutput()
а также $servicebusCommand->getIncrementalOutput()
регулярно.
Просто передайте закрытие функции запуска или запуска.
$process->start(function ($type, $buffer) use ($logFile) {
file_put_contents($logFile, $buffer, FILE_APPEND);
if ('err' === $type) {
echo 'ERR > '.$buffer;
} else {
echo 'OUT > '.$buffer;
}
});