PHP:sleep()之前和之后的输出数据?

Joh*_*ohn 4 php sleep output-buffering

这纯粹是为了更多地了解输出缓冲而已.我想做的是将一个字符串回显给浏览器,睡10秒钟,然后回复其他内容.通常浏览器会等待整整10秒,然后发布整个结果,我该如何阻止它?一个例子:

ob_start();
echo "one";
sleep(10);
echo "two";
Run Code Online (Sandbox Code Playgroud)

pil*_*lif 5

faileN的答案在理论上是正确的.没有ob_flush()数据将保留在PHP的缓冲区中,并且在请求结束时隐式刷新缓冲区之前不会到达浏览器.

它仍然不起作用的原因是因为浏览器也包含缓冲区.数据现在已正确发送,但浏览器在实际启动渲染之前等待"one"之后.否则,由于连接速度慢,页面呈现会非常非常慢.

当然,解决方法(以说明它正常工作)可以一次发送大量数据(可能是一些巨大的html注释或其他内容),或者在命令行中使用curl等工具.

如果要在客户端上使用此发送/休眠周期来进行某些状态更新UI,则必须找到另一种方法(如长轮询和AJAX)