2

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

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

脚本包括一些“echo”和“print”调用,让我可以实时了解执行过程中发生了什么。

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

当我的脚本在“网页模式”下被调用时,有没有一种简单的方法可以让我的 print()/echo() 调用实时出现?

提前致谢。

4

3 回答 3

3

根据浏览器和输出的大小,flush() 可能会或可能不会起作用(请参阅:PHP Flush() not working in Chrome

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

最好的办法是登录 db/session/fs 并让 JS 在客户端轮询更新。

于 2013-01-29T23:27:14.663 回答
1

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

于 2013-01-29T23:18:38.070 回答
1

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

我建议每 xxx 个输出冲洗一次,而不是在每次输出后冲洗一次,echo或者print如果它们出现在很短的时间间隔内。

于 2013-01-29T23:19:59.660 回答