立即打印结果(php)

时间:2009-09-01 17:09:31

标签: php

我有一个PHP脚本连接10个不同的服务器来获取数据。我希望它在第二个连接开始之前打印第一个连接的结果。

3 个答案:

答案 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页面这样做。