目标:制作一个进度条,用户可以在其中查看我的服务器下载了多少文件。
场景:我有一个 PHP 脚本,它通过 popen 执行 python 脚本。我是这样做的:
$handle = popen('python last', 'r');
$read = fread($handle, 4096);
pclose($handle);
这个 python 脚本输出到 shell 是这样的:
[last] ZVZX-W3vo9I: Downloading video webpage
[last] ZVZX-W3vo9I: Extracting video information
[download] Destination: myvideo.flv
[download] 9.9% of 10.09M at 3.30M/s ETA 00:02
问题:当我读入由 shell 输出生成的文件时,我得到了除最后一行以外的所有 shell 输出!?为什么?
补充一下,当我通过 shell 运行命令时,shell 光标出现在该行的末尾并等待脚本完成。
谢谢大家
最佳答案
我首先想到的是:也许程序检测到它没有在 TTY 上执行,因此没有显示最后一行,这可能涉及丑陋的控制字符,因为该行似乎会自行更新?
当您将输出重定向到一个文件(在 shell 中)或通过 less 管道输出时会发生什么?如果您在那里没有看到最后一行,很可能就是这种情况。除了修复源,我不知道还有其他解决方案。
关于php - AJAX 进度 : Reading output from the Shell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/524286/