立即打印结果(php)

mel*_*lih 13 php

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

Pas*_*TIN 27

使用flush和/或ob_flush,你应该得到你想要的.

这是一个快速演示:

for ($i=0 ; $i<10 ; $i++) {
    echo "$i<br />";
    ob_flush();
    flush();
    sleep(1);
}
Run Code Online (Sandbox Code Playgroud)

每一秒,一个数字将被发送到浏览器,而不必等待循环/脚本结束.
(没有刷新和ob_flush,它等待脚本结束发送输出)


解释为什么你需要两者,引用手册中的刷新页面:

刷新PHP的写缓冲区以及PHP正在使用的任何后端(CGI,Web服务器等).这会尝试将当前输出一直推送到浏览器,但需要注意几点.

flush()可能无法覆盖Web服务器的缓冲方案,并且它对浏览器中的任何客户端缓冲没有影响.它也不会影响PHP的用户空间输出缓冲机制.这意味着如果使用ob输出缓冲区,则必须同时调用ob_flush()和flush()来刷新ob输出缓冲区.


如果这对你不起作用,看看手册两页上的评论可以给你一些关于"它为什么会失败"的指示