没有得到popen的全部回复

wax*_*cal 4 php proc-open popen

嗨我正在用popen运行一个进程; -

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

而且我只从一个返回5行的进程中得到3行.我在CLi中运行这个确切的命令,我会得到更多的响应.就像它提前停止阅读一样(在完成工作时需要时间来完成并更新下两行,这是一个进度指示器).

我做错了吗?是proc_open更适合(我已经开始看,如果我可以试试).

Dav*_*dom 8

两条缺失的行可能正在写入STDERR,并且popen()只返回STDOUT的指针.

您可以使用STDERR获取指针,也可以proc_open()popen()行更改为

$handle = popen('python scriptos.py 2>&1', "r");
Run Code Online (Sandbox Code Playgroud)

将STDERR重定向到STDOUT,因此它们包含在您的输出中.