长PHP脚本和回声/打印

时间:2013-01-29 23:17:44

标签: php web echo

我有一些PHP脚本,可以从命令行或网页调用(使用$ GET或$ POST从其他网页传递参数)。

他们可能需要一段时间才能执行,比方说5分钟。

脚本包括一些“回声”和“打印”调用,让我可以实时了解执行过程中发生的事情。

问题是,在网页模式下,那些回显调用在脚本执行结束之前不会在浏览器中打印任何内容。或者有时候,一半的回声出现在2分钟后,其余部分出现在最后。

当我的脚本在“网页模式”中调用时,是否有一种简单的方法可以让我的print()/ echo()调用实时显示?

提前致谢。

3 个答案:

答案 0 :(得分:3)

flush()可能会也可能不会起作用,具体取决于浏览器和输出的大小(请参阅:PHP Flush() not working in Chrome

如果启用mod_gzip,Apache也可以缓冲输出。

您最好的办法是登录db / session / fs并在客户端进行JS轮询以获取更新。

答案 1 :(得分:1)

在脚本执行完成之前,使用ob_flush()强制将输出发送到浏览器。

答案 2 :(得分:1)

我假设您没有使用输出缓冲,因为您的脚本在consolde上输出正常。因此,使用flush()明确告诉PHP它应该将输出发送到浏览器。

如果短时间间隔出现,我会建议每隔xxx输出刷新一次,而不是在每echoprint后刷新。