1

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

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

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

file_get_contents($url)用来检索内容,并调用一个函数echo来打印到目前为止已经加载的内容。这种流式打印行为是浏览器的一项功能并且独立于我用 PHP 编写的内容吗?如果不是,如何更好地控制?

4

1 回答 1

5

最简单的解决方法是使用输出缓冲。基本思想是ob_start()在脚本开始时调用,然后ob_end_flush()在您希望将页面内容发送到客户端时调用。这样做将保存所有输出,直到您希望程序发送它。

于 2011-01-17T03:45:45.520 回答