Не получить полный ответ от попен - PullRequest
4 голосов
/ 15 декабря 2011

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

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

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

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

1 Ответ

8 голосов
/ 15 декабря 2011

Две отсутствующие строки, вероятно, записываются в STDERR , а popen() возвращает только указатель для STDOUT.

Вы можете получить указатель для STDERR, используя proc_open() или измените строку popen() на

$handle = popen('python scriptos.py 2>&1', "r");

, чтобы перенаправить STDERR в STDOUT, чтобы они были включены в ваш вывод.

...