理解 PHP output buffer

在需要使用输出缓存区的时候,一般会在代码中加上ob_start()这个函数。

这是因为php.ini中output_buffering设置为off时,则缓存区处于关闭状态,需要用ob_start()打开缓存区。如果output_buffering为On时,写ob_start(),不会有什么影响,只是为了保险起见,防止output_buffering未开启。

实例代码:

<?php
ob_start();//开启缓冲区
 echo "这是第一次输出内容!\n";
 $a[1] = ob_get_contents() ; //获取当前缓冲区内容
 ob_flush();//缓冲器清除
 echo "这是第二次输出内容!\n";
 $a[2] = ob_get_contents() ; //获取当前缓冲区内容
 echo "这是第三次输出内容!\n";
 $a[3] = ob_get_contents() ; //获取当前缓冲区内容

  echo "<pre>";
  print_r($a);
//输出结果
这是第一次输出内容! 这是第二次输出内容! 这是第三次输出内容!
Array
(
    [1] => 这是第一次输出内容!

    [2] => 这是第二次输出内容!

    [3] => 这是第二次输出内容!这是第三次输出内容!
)
一、 相关函数简介:1、Flush:刷新缓冲区的内容,输出。函数格式:flush()说明:这个函数经常使用,效率很高。

2、ob_start :打开输出缓冲区函数格式:void ob_start(void)说明:当缓冲区激活时,所有来自PHP程序的非文件头信息均不会发送,而是保存在内部缓冲区。为了输出缓冲区的内容,可以使用ob_end_flush()或flush()输出缓冲区的内容。

3 、ob_get_contents :返回内部缓冲区的内容。使用方法:string ob_get_contents(void)说明:这个函数会返回当前缓冲区中的内容,如果输出缓冲区没有激活,则返回 FALSE 。

4、ob_get_length:返回内部缓冲区的长度。使用方法:int ob_get_length(void)说明:这个函数会返回当前缓冲区中的长度;和ob_get_contents一样,如果输出缓冲区没有激活。则返回 FALSE。

5、ob_end_flush :发送内部缓冲区的内容到浏览器,并且关闭输出缓冲区。使用方法:void ob_end_flush(void)说明:这个函数发送输出缓冲区的内容(如果有的话)。

6、ob_end_clean:删除内部缓冲区的内容,并且关闭内部缓冲区使用方法:void ob_end_clean(void)说明:这个函数不会输出内部缓冲区的内容而是把它删除!

7、ob_implicit_flush:打开或关闭绝对刷新使用方法:void ob_implicit_flush ([int flag])说明:使用过Perl的人都知道$|=x的意义,这个字符串可以打开/关闭缓冲区,而ob_implicit_flush函数也和那个一样,默认为关闭缓冲区,打开绝对输出后,每个脚本输出都直接发送到浏览器,不再需要调用 flush()
时间: 2024-10-01 03:03:10

理解 PHP output buffer的相关文章

Redis配置详解-客户端缓冲区 output buffer

Redis配置详解-客户端缓冲区  http://blog.csdn.net/jiangguilong2000/article/details/38436941 Redis异常及使用总结 http://blog.csdn.net/jiangguilong2000/article/details/45025355 客户端缓冲区 output buffer 大概已经知道Redis是一个内存数据库,这意味着所有的数据都由RAM直接管理和提供的.因此Redis有着卓越的交付性能,Redis可以以亚毫秒级

Redis-客户端缓冲区 output buffer

Redis是一个移动服务器,客户端(通常)通过网络连接Redis.这种情况下,客户端请求返回客户端的时间将显著长于Redis CPU从RAM读取数据的时间.这意味着如果没有客户端缓冲区的话,Redis的主要差异与在该段时间对服务的响应有关.客户端缓冲区组成了服务客户请求所需的内存空间,Redis的每个连接都配有自己的缓冲区空间.处理请求后,Redis把响应数据复制到客户端缓冲区,然后继续处理下一个请求,与此同时,请求客户端通过网络连接读取数据.Redis客户端缓冲区配置在redis.conf文件

理解Nodejs的Buffer

上周同事用我们的工具写了一个关于全国比较出名的景点介绍的APP,地址在这里.整个APP中文字符比较多,文件也比较大,计算了下整个APP描述文件大小在4M左右.整个描述文件要放到第三方CDN.在这中间,我们的服务器主要负责获取前端传上来的数据,做一些加工处理并压缩后抛给第三方CDN服务器. Node接受POST数据通常的写法: var load = function(stream, onDone) { var data = ''; stream.on('data', function(chunk)

霍夫变换理解

霍夫变换可以用于直线检测,圆检测等.我需要解决的问题是二维点云线特征提取,相关文献上说霍夫变换可以提取,决定深入学习一下. 先上两张图:直线的表达式采用极坐标表示ρ=xcosθ+ysinθ,关于ρ和θ的几何意义如图.证明下面的图可以说明. 因此过某一点A的极坐标方程可以表示所有过A点的直线族. 同理过某一点B的极坐标方程可以表示过有过点B的直线族.两个直线族的集合就是同时过A点和B点的直线. 霍夫变换首先将极坐标系的纵横坐标轴ρ和θ离散化,构成一个网格m*n的数组.这样对栅格图像的每一个非0点进

【翻译自mos文章】使用buffer memory 参数来调整rman的性能。

使用buffer memory 参数来调整rman的性能. 本文翻译自mos文章:RMAN Performance Tuning Using Buffer Memory Parameters (Doc ID 1072545.1) rman 性能调整的目的是分辨一个特定的backup or  restore job的瓶颈. 并使用使用rman命令.初始化参数 或者对physical media的调整来提高整体的性能. 由于数据库容量持续变大,在客户的环境中,几十到几百TB的数据库很常见, serv

Muduo 设计与实现之一:Buffer 类的设计

[开源访谈]Muduo 作者陈硕访谈实录 http://www.oschina.net/question/28_61182 开源访谈是开源中国推出的一系列针对国内优秀开源软件作者的访谈,以文字的方式记录并传播.我们希望开源访谈能全面的展现国内开源软件.开源软件作者的现状,着实推动国内开源软件的应用与发展. [嘉宾简介] 陈硕 北京师范大学硕士,擅长 C++ 多线程网络编程和实时分布式系统架构.现任职于香港某跨国金融公司 IT 部门,从事实时外汇交易系统开发.编写了开源 C++ 网络库 muduo

Android Multimedia框架总结(二十)MediaCodec状态周期及Codec与输入/输出Buffer过程(附实例)

转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/53183718 前言:前面几节都是介绍Camera2相关,对于Camera2预览把图像显示在SurfaceView上,还有录像时,时时刷新当前图像区域.追溯到最早介绍的MediaPlayer播放视频,这些都离不开重要角色MediaCodec,今天介绍MediaCodec,看下Agenda: MediaCodec是什么? codec操

Buffer类的详解(转)

Buffer 类是 java.nio 的构造基础.一个 Buffer 对象是固定数量的数据的容器,其作用是一个存储器,或者分段运输区,在这里,数据可被存储并在之后用于检索.缓冲区可以被写满或释放.对于每个非布尔原始数据类型都有一个缓冲区类,即 Buffer 的子类有:ByteBuffer.CharBuffer.DoubleBuffer.FloatBuffer.IntBuffer.LongBuffer 和 ShortBuffer,是没有 BooleanBuffer 之说的.尽管缓冲区作用于它们存储

muduo buffer类的设计与使用

Unix/Linux上的五种IO模型(UNP6.2) IO多路复用一般不能和blocking IO用在一起,因为blocking IO中read() write() accept() connect()都有可能阻塞当前线程,这样线程就没办法处理其他socket上的IO事件了 non-blocking IO的核心思想是避免阻塞在read()或write()或其他IO系统调用上,让一个线程能服务于多个socket连接,IO线程只能阻塞在IO多路复用函数上,如select.poll.epoll_wai