当前位置: 首页 > 面试题库 >

PHP缓冲区ob_flush()与flush()

汪建白
2023-03-14
问题内容

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

ob_flush()参考说:

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

flush()参考说:

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

但是,它继续说:

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

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


问题答案:

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

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

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

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



 类似资料:
  • 问题内容: 有人可以保存这两个文件并运行它们,然后告诉我为什么我得到错误“ ob_flush()[ref.outcontrol]:无法刷新缓冲区。没有要刷新的缓冲区”。我尝试了四处搜寻,并说必须使用ob_start();。但是,当我这样做时,它不会逐行打印出来,而是在完成后从FOR循环返回整个对象。我对PHP有点陌生,所以我不确定其他地方。 test_process.php main.html 问

  • 本文向大家介绍PHP缓冲区用法总结,包括了PHP缓冲区用法总结的使用技巧和注意事项,需要的朋友参考一下 本文实例总结了PHP缓冲区用法。分享给大家供大家参考,具体如下: 我们先来看一段代码。 按照php手册里的说法: 该函数将当前为止程序的所有输出发送到用户的浏览器。 上面的这段代码,应该隔一秒钟输出一次$i。但是实际中却不一定是这样。有可能是等了10秒钟后,所有的输出同时呈现出来。 好,我们来改

  • 使用RxJava,我需要将一个项目流缓冲到3个组中,但如果传入项目之间的间隔超过500ms,则刷新缓冲区。 bufferWithTimeOrCount()操作符正是我想要的,但它似乎只针对RxJS和Rx实现。NET,我需要使用RxJava来实现这一点。 是否有方法复制bufferWithTimeOrCount()的行为,并获得我对现有RxJava 1的期望。x运算符? 尝试每隔500毫秒发出一个新

  • 本文向大家介绍php中ob_get_length缓冲与获取缓冲长度实例,包括了php中ob_get_length缓冲与获取缓冲长度实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php中ob_get_length缓冲与获取缓冲长度的方法。分享给大家供大家参考。具体方法如下: file_get_contents() 函数把整个文件读入一个字符串中,和 file() 一样,不同的是 fil

  • 纯JavaScript是Unicode友好的,但二进制数据却不是这样。 在处理TCP流或文件系统时,必须处理八位字节流。 Node提供了Buffer类,它提供了存储类似于整数数组的原始数据的实例,但对应于V8堆外部的原始内存分配。 Buffer类是一个全局类,可以在应用程序中访问而无需导入缓冲区模块。 创建缓冲区 节点缓冲区可以以多种方式构建。 Method 1 以下是创建10个八位字节的无启动缓

  • 问题内容: 简单的说,我总是对PHP / MySQL缓冲查询和非缓冲查询之间的区别是,缓冲(默认)将所有数据加载到结果集变量中, 然后 您可以开始使用它们,而无缓冲则在以下位置加载行:一个时间。 假设您先运行然后进行了,它将包含所有行和补充信息,例如行数。因此,如果您在100MB的数据库上执行此操作,那么如果那里没有索引,则可能会占用约100MB的空间)。 但是,我遇到了这样的SO溢出问题,其中一