嗨,我正在使用 popen 运行一个进程;-
$handle = popen('python scriptos.py', "r");
while (!feof($handle)) {
$data = fgets($handle);
echo "> ".$data;
}
我只从返回 5 行的进程中获取 3 行。我在 CLi 中运行这个确切的命令,我会得到更多响应。就好像它提前停止读取一样(在工作时可能需要一些时间才能完成并更新接下来的两行,这是一个进度指示器)。
我做错了什么吗?是进程打开 http://php.net/manual/en/function.proc-open.php更合适(我已经开始考虑是否可以尝试)。
丢失的两行可能正在写入STDERR http://en.wikipedia.org/wiki/Standard_streams#Standard_error_.28stderr.29, and popen()
只返回 STDOUT 的指针。
您可以使用以下命令获取 STDERR 的指针proc_open() http://php.net/manual/en/function.proc-open.php,或更改popen()
line to
$handle = popen('python scriptos.py 2>&1', "r");
将 STDERR 重定向到 STDOUT,以便它们包含在您的输出中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)