Не получив полного ответа от попена


Привет, я запускаю процесс с popen; -

$handle = popen('python scriptos.py', "r");
while (!feof($handle)) {
    $data = fgets($handle);
    echo "> ".$data;
}

И я получаю только 3 строки от процесса, который возвращает 5 строк. Я выполняю эту точную команду в командной строке, и я получу больше ответов. Это как если бы он рано перестал читать (может потребоваться время для завершения и обновления следующих 2 строк во время работы, это индикатор прогресса).

Я делаю что-то не так? Является proc_open более подходящим (я начал выяснять, могу ли я это попробовать).

Author: waxical, 2011-12-15

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