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

PHP缓冲区ob_flush()与flush()

PHP缓冲区ob_flush()与flush()

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

3 回答

?
慕慕森

TA贡献1856条经验 获得超17个赞

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


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


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


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



查看完整回答
反对 回复 2019-12-14
?
幕布斯6054654

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

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


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

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


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



查看完整回答
反对 回复 2019-12-14
  • 3 回答
  • 0 关注
  • 390 浏览
慕课专栏
更多

添加回答

举报

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