有没有办法在脚本执行时逐步输出PHP?

时间:2010-03-25 04:43:10

标签: php streaming progress-bar outputstream output-buffering

所以我正在编写一个一次性脚本供我个人使用,我希望能够看到这个过程的进展情况。基本上我正在处理几千个媒体发布并将它们发送到我们新的CMS。

所以我没有锤击CMS,我在每5次请求后制作脚本sleep几秒钟。

我希望 - 在脚本执行时 - 能够看到我的echo告诉我脚本将要进入睡眠状态,或者最后一次与webservice的事务是否成功。

这可以在PHP中使用吗?

感谢您的帮助!

伊恩

3 个答案:

答案 0 :(得分:11)

使用ob_flush发送缓冲区中的任何数据。因此,您可以执行一些命令,刷新输出,然后在处理更多命令之前稍微休眠一下。

  

我注意到在特别长的脚本上,即使脚本没有完成执行,PHP似乎也开始发送它在缓冲区中的内容

默认情况下,在整个脚本完成执行之前,PHP永远不会回显任何内容。那只是你的浏览器试图一次输出太多数据,或者你有一些东西导致它在某个地方冲洗。

答案 1 :(得分:2)

您可以尝试使用flush并查看其他output control functions,但它们可能没有任何用处。无论如何,您的Web服务器软件都可以缓冲响应。

答案 2 :(得分:0)

您可能想要探索刷新命令http://php.net/manual/en/function.flush.php