使用PHP进行流式打印

orl*_*ade 1 php printing streaming echo buffered

我编写了一个PHP脚本,它向搜索引擎发出请求,访问服务结果,从结果中提取一些细节,然后以更有用的形式打印它们.

这一切都运行良好,但我偶然发现的一点是,在等待数据流入时调用echo或print会导致输出也被流式传输.具体来说,有多页结果,所以我访问第一页,读入并重新打印内容,然后转到下一页,在等待下一页加载时,上一页的内容变为可见浏览器.

我不明白为什么这种情况发生得如此不一致.有时在移动到下一页之前将打印一页,有时更少,有时更多.然后,当我之后基本上做同样的事情(在每个结果指向的页面中读取)时,输出几乎不流动,每分钟左右重绘一次.

我正在使用file_get_contents($url)检索内容,并使用其中的函数echo来打印到目前为止已加载的内容.这种流式打印行为是否是浏览器的一项功能,与我在PHP中编写的内容无关?如果没有,怎样才能更好地控制?

GWW*_*GWW 5

最简单的解决方法是使用输出缓冲.基本思想是ob_start()在脚本开头调用,然后ob_end_flush()在希望将页面内容发送到客户端时调用.执行此操作将保存所有输出,直到您希望程序发送它为止.