Привет, я запускаю процесс с popen;
$handle = popen('python scriptos.py', "r"); while (!feof($handle)) { $data = fgets($handle); echo "> ".$data; }
И я получаю только 3 строки из процесса, который возвращает 5 строк. Я запустил эту точную команду в CLi, и я получу больше ответа. Это похоже на то, что он перестает читать на ранней стадии (может потребоваться время для завершения и обновления следующих 2 строк во время работы, это индикатор прогресса).
Я что-то делаю неправильно? Является ли proc_open более подходящим (я начал видеть, могу ли я попробовать это).
Две отсутствующие строки, вероятно, записываются в STDERR , а popen()
возвращает указатель на STDOUT.
Вы можете получить указатель на STDERR с помощью proc_open()
или изменить строку popen()
на
$handle = popen('python scriptos.py 2>&1', "r");
для перенаправления STDERR на STDOUT, поэтому они включены в ваш выход.