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;
        }
});

Отсюда

Другие вопросы по тегам