ob_flush()flush()有什么区别?为什么我必须两者都打电话?

ob_flush() reference人说:

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

flush() reference人说:

刷新PHP的写缓冲区以及PHP使用的任何后端(CGI、web服务器等).

然而,它继续说:

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

所以,在我看来,我可以一直使用ob_flush().然而,当我这样做的时候,我得到了奇怪的结果.有人能简单地解释一下这是怎么回事吗?

推荐答案

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

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

现在,Web服务器本身可能会实现另一种缓冲方案(mod_deflate或内容过滤),而您对此没有任何影响.但这种情况很少发生,因为它需要专门配置.

不管怎样,两个都要用.

Php相关问答推荐

在WooCommerce checkout 时请求强制旅客信息并在感谢、邮箱和管理命令中显示

在PHP中替换数组中的文本并同时使用其他函数

WooCommerce中仅在单一产品和产品档案页面中将小数设置为大写

照明\Support\Collection::Filter():参数#1($Callback)的类型必须为?可调用、已给定数组、已调用

MULTI UPDATE Laravel为什么只能更新我的第一行

如何在Foreach语句中使用php和li按降序排序?

PHP -多维数组到一维数组

将一个情态形式放在细丝v3中的形式中间

如何不重新查询模型A-&>;相关模型B-&>模型

在PHP中使用curl命令执行SCRAPYD操作.json不返回任何内容

使用随机生成器在MYSQL中创建唯一ID-定义一个数组来存储已知ID是否安全

Regex|PHP捕获json字符串中的每个非法双引号

将自定义字段添加到管理产品 在 WooCommerce 3.2+ 中批量编辑

无法在 WordPress 上获取 JSON 数据

laravel Eloquent 模型的问题

循环中未序列化数组显示的问题

正则表达式抓取递归括号的内容

将样式文件或脚本引入WordPress模板

来自命令行的 PHP 没有给出正确的结果

在 EasyAdmin 中添加全局操作,将我的按钮放在表格下方而不是上方