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