我有一个PHP脚本连接10个不同的服务器来获取数据。我希望它在第二个连接开始之前打印第一个连接的结果。
答案 0 :(得分:26)
使用flush
和/或ob_flush
,您应该得到您想要的内容。
以下是一个快速演示:
for ($i=0 ; $i<10 ; $i++) {
echo "$i<br />";
ob_flush();
flush();
sleep(1);
}
每一秒,一个数字将被发送到浏览器,而不必等待循环/脚本结束。
(没有flush和ob_flush
,它会一直等到脚本结束才能发送输出)
解释为什么你需要两者,引用手册中的刷新页面:
刷新PHP和的写缓冲区 无论PHP使用什么后端(CGI,a 网络服务器等)。这试图 将电流输出一直推到 浏览器有几点需要注意。
flush()可能无法覆盖 你网络的缓冲方案 服务器,它对任何都没有影响 浏览器中的客户端缓冲。 它也不会影响PHP的用户空间 输出缓冲机制。这意味着 你必须同时调用ob_flush() 和flush()来刷新ob输出 缓冲区,如果您正在使用它们。
如果这对你不起作用,看看手册两页上的评论可以给你一些关于“它为什么会失败”的指示
答案 1 :(得分:2)
<强> ob_end_flush 强> http://us.php.net/ob_end_flush
此函数清空输出缓冲区并禁用输出缓冲。此功能后的所有内容都会立即发送到浏览器。
答案 2 :(得分:0)
是的,ob_flush应该这样做。当我想观察操作的进展时,我会一直使用LOOONG页面这样做。