PHP缓冲区ob_flush()与flush()

什么之间的区别ob_flush(),并flush()和我为什么一定要同时调用?


该ob_flush()参考说:


此函数将发送输出缓冲区的内容(如果有)。


该flush()参考说:


刷新PHP的写缓冲区以及PHP使用的任何后端PHP(CGI,Web服务器等)。


但是,它继续说:


[它]可能无法覆盖Web服务器的缓冲方案…


因此,在我看来,我可以一直使用ob_flush()所有时间。但是,这样做会得到奇怪的结果。有人可以简单地解释一下这是怎么回事吗?


RISEBY
浏览 585回答 3
3回答

慕娘9325324

ob_flush发送应用程序启动的缓冲区。ob_start()任何PHP脚本中都可能有多个嵌套的。ob_flush将当前内容传递到上层。PHP本身(可以自行决定)可以缓冲输出。这取决于后端。但是通常FastCGI有一个套接字缓冲区。因此,还flush()需要调用以将当前内容发送到Web服务器。现在,Web服务器本身可能实现了另一个缓冲方案(mod_deflate或内容过滤器),您对此没有影响。但这很少,因为它需要专门配置。无论如何,请同时使用两者。

元芳怎么了

ob_flush()是高级冲洗。它刷新高级缓冲区,并将所有内容放入准备发送的低级内部缓冲区中。请注意,ob_函数家族会创建缓冲区堆栈,因此,ob_flush()如果编写代码来利用此堆栈,那么盲目地在所有地方编写确实会给您“奇怪的结果”。flush() 是低级刷新,指示PHP刷新其内部低级数据缓冲区。仍然在其下方,有套接字层缓冲区。在此之下,有网络层缓冲区。而且,在最低级别上,电子队列沿着数据电缆传输。
打开App,查看更多内容
随时随地看视频慕课网APP