为了账号安全,请及时绑定邮箱和手机立即绑定

PHP缓冲区ob_flush()与flush()

PHP缓冲区ob_flush()与flush()

PHP
RISEBY 2019-10-29 10:47:29
什么之间的区别ob_flush(),并flush()和我为什么一定要同时调用?该ob_flush()参考说:此函数将发送输出缓冲区的内容(如果有)。该flush()参考说:刷新PHP的写缓冲区以及PHP使用的任何后端PHP(CGI,Web服务器等)。但是,它继续说:[它]可能无法覆盖Web服务器的缓冲方案…因此,在我看来,我可以一直使用ob_flush()所有时间。但是,这样做会得到奇怪的结果。有人可以简单地解释一下这是怎么回事吗?
查看完整描述

3 回答

?
慕娘9325324

TA贡献1783条经验 获得超4个赞

ob_flush发送应用程序启动的缓冲区。ob_start()任何PHP脚本中都可能有多个嵌套的。ob_flush将当前内容传递到上层。


PHP本身(可以自行决定)可以缓冲输出。这取决于后端。但是通常FastCGI有一个套接字缓冲区。因此,还flush()需要调用以将当前内容发送到Web服务器。


现在,Web服务器本身可能实现了另一个缓冲方案(mod_deflate或内容过滤器),您对此没有影响。但这很少,因为它需要专门配置。


无论如何,请同时使用两者。


查看完整回答
反对 回复 2019-10-29
?
元芳怎么了

TA贡献1798条经验 获得超7个赞

ob_flush()是高级冲洗。它刷新高级缓冲区,并将所有内容放入准备发送的低级内部缓冲区中。


请注意,ob_函数家族会创建缓冲区堆栈,因此,ob_flush()如果编写代码来利用此堆栈,那么盲目地在所有地方编写确实会给您“奇怪的结果”。

flush() 是低级刷新,指示PHP刷新其内部低级数据缓冲区。


仍然在其下方,有套接字层缓冲区。在此之下,有网络层缓冲区。而且,在最低级别上,电子队列沿着数据电缆传输。


查看完整回答
反对 回复 2019-10-29
  • 3 回答
  • 0 关注
  • 584 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信