PHP: выполнить команду как синхронный процесс и прочитать stderr

У меня есть класс PHP, который должен запускать основной Java как отдельный процесс.
Выполнение должно быть синхронным, и после его завершения я должен прочитать stderr для обработки и регистрации потенциальных ошибок.

Я вижу, что наиболее популярными методами для запуска отдельных процессов из PHP являются exec () и proc_open ().
Однако я не понимаю, что мне следует использовать и как.

Exec (), будучи синхронным и очень простым в использовании, должен быть лучшим выбором для меня. Однако из того, что я вижу здесь, на StackOverflow: PHP StdErr после Exec (), кажется, что единственный способ получить stderr — это явно создать для него файл. Это не кажется мне элегантным решением.

На очереди, proc_open кажется действительно мощным инструментом, и он позволяет прямой, отдельный доступ к stdin, stdout и stderr.
Для того, что мне нужно сделать, код должен выглядеть примерно так:

$proc = proc_open($cmd,[2 => ['pipe','w']],$pipes);
$stderr = stream_get_contents($pipes[2]);
fclose($pipes[2]);
proc_close($proc);
$error = var_dump($stderr)

Проблема в том, что proc_open асинхронный, поэтому, если я правильно понял, я не могу быть уверен, что при запуске stream_get_contents я получу какое-либо соответствующее сообщение (ошибки могут появиться позже!).

Что я должен делать?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]