这真的很奇怪,我上周刚刚更换了服务器而且我有一个处理大量信息的大型脚本(个人脚本)。
它做什么用foreach将数据添加到数据库然后回显它的位置(例如:“ID#27被处理”)等等,直到完成为止。使用旧服务器,我会看到这个“echo”脚本逐个运行,但是使用我的新服务器,它会显示一个带有沙漏的空白页,直到它被加载/完成。
服务器或PHP上是否有可以显示页面的配置?
由于
答案 0 :(得分:4)
如果您有权访问php.ini
,则可以设置output_buffering = Off
以完全禁用此行为。否则,请按照其他人的建议使用flush()
。
我认为output_buffering
的默认设置为4096
。如果新服务器设置得更高,您也可以尝试简单地降低它而不是将其关闭以实现与旧服务器类似的行为,而不会完全丢失缓冲。
编辑 According to PHP docs,Apache mod_gzip
可能会执行自己的输出缓冲,阻止flush()
工作。
答案 1 :(得分:2)
在每个相关输出后调用flush可能会有所帮助。
答案 2 :(得分:2)
答案 3 :(得分:0)
我假设您使用flush()将输出推送到客户端。 php页面上有很多关于flush的注释,请参阅说明。
例如:flush() may not be able to override the buffering scheme of your web server and it has no effect on any client-side buffering in the browser.
。
这可以立即解释整个情况。 你能证实这些笔记不是原因吗?