php 缓冲函数
php.ini中有两个关键参数会影响到php的缓存输出控制:
output_buffering :on/off 或者整数 。设置为 on 时,将在所有脚本中使用输出缓存控制,不限制缓存的大小。而设置为整数时,如 output_buffering=4096,当缓存数据达到4096字节时会自动输出刷新缓存。而这个参数的不同正是导致以上代码在不同时候执行结果不同的原因。当 output_buffering 关闭时,脚本所有的输出(echo)都会即时发送到客户端,执行上面代码时就是每秒输出一个数字。而开启 output_buffering 后,输出内容就会先缓存在服务端,直到脚本结束时才一起发送给客户端。
implicit_flush:on/off。设定ON意味着,当脚本有输出时,自动立即发送到客户端。相当于在echo后自动加 flush()。
ob_start— 打开输出控制缓冲 (PHP 4, PHP 5, PHP 7)
当输出缓冲激活后,脚本将不会输出内容(除http标头外),相反需要输出的内容被存储在内部缓冲区中。
ob_get_status — 得到所有输出缓冲区的状态 (PHP 4 >= 4.2.0, PHP 5, PHP 7)
array ob_get_status ([ bool $full_status = FALSE ] )
返回最顶层输出缓冲区的状态信息;或者如果full_status设为TRUE,返回所有有效的输出缓冲级别。
ob_get_contents — 返回输出缓冲区的内容 (PHP 4, PHP 5, PHP 7)
返回输出缓冲区的内容,或者如果输出缓冲区无效将返回 FALSE 。
ob_get_length — 返回输出缓冲区内容的长度 (PHP 4 >= 4.0.2, PHP 5, PHP 7)
输出缓冲区内容的长度;或者返回FALSE——如果没有起作用的缓冲区。
ob_get_clean — 得到当前缓冲区的内容并删除当前输出缓冲区 (PHP 4 >= 4.3.0, PHP 5, PHP 7)
输出缓冲区的内容,并删除当前输出缓冲区。如果输出缓冲区不是活跃的,即返回 FALSE 。
ob_get_flush — 刷出(送出)缓冲区内容,以字符串形式返回内容,并关闭输出缓冲区。
刷出(送出)缓冲区内容,以字符串形式返回内容,并关闭输出缓冲区。
ob_flush — 冲刷出(送出)输出缓冲区中的内容 (PHP 4 >= 4.2.0, PHP 5, PHP 7)
送出缓冲区的内容(如果里边有内容的话)到程序(PHP)缓冲,在调用ob_flush()之后缓冲区内容将被丢弃。
flush — 刷新输出缓冲 (PHP 4, PHP 5, PHP 7)
刷新PHP程序的缓冲,将当前为止程序的所有输出发送到用户的浏览器。flush() 函数不会对服务器或客户端浏览器的缓存模式产生影响。因此,必须同时使用 ob_flush() 和flush() 函数来刷新输出缓冲。flush() 是刷新WebServer的缓冲区,而且只有apache的缓冲区会生效,使用nginx作为WebServer是不用生效的。
第一种解释:
在没有开启缓存时,脚本输出的内容都在服务器端处于等待输出的状态,flush() 可以将等待输出的内容立即发送到客户端。 开启缓存后,脚本输出的内容存入了输出缓存中,这时没有处于等待输出状态的内容,你直接使用flush()不会向客户端发出任何内容。而 ob_flush() 的作用就是将本来存在输出缓存中的内容取出来,设置为等待输出状态,但不会直接发送到客户端,这时你就需要先使用ob_flush()再使用flush(),客户端才能立即获得脚本的输出。
第二种解释:
ob_flush只刷新PHP自身的缓冲区,而flush是刷新apache的缓冲区。所以,正确使用俩者的顺序是:先ob_flush,然后flush。ob_flush是把数据从PHP的缓冲中释放出来,flush是把缓冲内/外的数据全部发送到浏览器。
ob_end_flush — 冲刷出(送出)输出缓冲区内容并关闭缓冲 (PHP 4, PHP 5, PHP 7)
送出最顶层缓冲区的内容(如果里边有内容的话),并关闭缓冲区。在调用ob_end_flush()后缓冲区内容被丢弃。ob_start() 和 ob_end_flush() 是一对很好的搭档,可以实现对输出的控制。
ob_end_clean — 清空(擦除)缓冲区并关闭输出缓冲 (PHP 4, PHP 5, PHP 7)
丢弃最顶层输出缓冲区的内容并关闭这个缓冲区。调用ob_end_clean()时缓冲区内容将被丢弃。
ob_clean — 清空(擦掉)输出缓冲区 (PHP 4 >= 4.2.0, PHP 5, PHP 7)
清空输出缓冲区中的内容
ob_implicit_flush — 打开/关闭绝对刷送 (PHP 4, PHP 5, PHP 7)
ob_implicit_flush ([ int $flag = true ] ) 设为TRUE 打开绝对刷送,反之是 FALSE 。
将打开或关闭绝对(隐式)刷送。绝对(隐式)刷送将导致在每次输出调用后有一次刷送操作,以便不再需要对 flush() 的显式调用。
相关函数
- ob_get_level — 返回输出缓冲机制的嵌套级别
- ob_gzhandler — 在ob_start中使用的用来压缩输出缓冲区中内容的回调函数。ob_start callback function to gzip output buffer
- ob_list_handlers — 列出所有使用中的输出处理程序。
- output_add_rewrite_var — 添加URL重写器的值(Add URL rewriter values)
- output_reset_rewrite_vars — 重设URL重写器的值(Reset URL rewriter values)
php 缓冲函数的更多相关文章
- PHP 页面缓冲函数
1.flush:刷新缓冲区的内容,输出.函数格式:flush()说明:这个函数经常使用,效率很高.2.ob_start :打开输出缓冲区函数格式:void ob_start(void)说明:当缓冲区激 ...
- PHP header() 函数详细说明(301、404等错误设置)
原文来自:http://www.veryhuo.com/a/view/41466.html 如果您刚刚开始学习PHP,可能有许多函数需要研究,今天我们就来学习一下PHP Header()的使用方法,更 ...
- CoreAnimation5-图层时间和缓冲
图层时间 动画的发生是需要持续一段时间的,所以计时对整个概念来说至关重要.在这一章中,我们来看看CAMediaTiming,看看Core Animation是如何跟踪时间的. CAMediaTimin ...
- 常用的opengl函数(三)
glBlendFunc 定义像素算法. void WINAPI glBlendFunc(GLenum sfactor,GLenum dfactor); 参数编辑 sfactor 指定红绿蓝和 al ...
- [iOS Animation]-CALayer 缓冲
缓冲 生活和艺术一样,最美的永远是曲线. -- 爱德华布尔沃 - 利顿 在第九章“图层时间”中,我们讨论了动画时间和CAMediaTiming协议.现在我们来看一下另一个和时间相关的机制--所谓的缓冲 ...
- loadsh常用函数
此篇文章会记录常用的lodash函数 防抖函数:_.debounce() 创建一个去缓冲函数,该函数将自上次调用函数以来经过设置的等待毫秒后调用func. 去缓冲函数带有一个取消方法来取消延迟的fun ...
- linux中fflush函数和printf函数 【转】
本文转载自:http://blog.chinaunix.net/uid-30058258-id-5029847.html printf是一个行缓冲函数printf函数是标准函数,最终会调用到系统调用函 ...
- fflush()函数总结
1. 概述 函数名: fflush() 功 能: 清除读写缓冲区,需要立即把输出缓冲区的数据进行物理写入时 头文件: stdio.h 原型: int fflush(FILE *stream),其中st ...
- printf函数与缓冲区
printf函数与缓冲区 printf函数是一个行缓冲函数,先将内容写到缓冲区,满足一定条件后,才会将内容写入对应的文件或流中. 基本条件如下: .缓冲区填满 .写入的字符中有‘\n’ '\r' .调 ...
随机推荐
- YII2 模型关联之 一对多
需求,一个用户有多篇文章全部查询出来 文章表 用户表 //首先查找出一个用户出来 $user=Users::find()->'])->one(); //第一个参数还是关联的模型,第二个依旧 ...
- 转-使用wifi调试程序
转自:http://www.cnblogs.com/sunzhenxing19860608/archive/2011/07/14/2106492.html 数据线丢了,不想花钱去买,在网上看了看,an ...
- Setting up an OpenGL development environment in ubuntu
1.opening terminal window and entering the apt-get command for the packages: sudo apt-get install me ...
- Android Studio 编译提示 No installed build tools found. Please install the Android build tools
添加 ANDROID_HOME=D:\Android\adt-bundle-windows\sdk 系统变量即可
- 69. Sqrt(x) 求根号再取整
[抄题]: Implement int sqrt(int x). Compute and return the square root of x, where x is guaranteed to b ...
- Part5核心初始化_lesson3---关闭看门狗
1.看门狗---作用 2.看门狗工作方式 3.原理图 时钟源来自于PCLK经过分频器,经过选择器,输出到作为看门狗定时器,WTDAT为一个预载值,当它计数为零的时候,还没有给WTDAT赋值,那么它会发 ...
- does not name a type
一般都与头文件有关 1.缺少using namespaces std: 2.头文件的地方不对. 3.加错了头文件,还会出现内部函数库的报错.有的函数被多个函数库包含
- HTML5和CSS3实例教程 中文版 高清PDF扫描版
HTML5和CSS3实例教程共分3部分,集中讨论了HTML5和CSS3规范及其技术的使用方法.首先是规范概述,介绍了新的结构化标签.表单域及其功能(包括自动聚焦功能和占位文本)和CSS3的新选择器.接 ...
- vba实现excel多表合并
Excel多表合并之vba实现 需求 保留列名,复制每一个excel里的数据,合并到一个excel 操作步骤 将要合并的文件放在同一文件夹下,复制过来就好(ps:最好不要直接操作原数据文件,避免操作失 ...
- HackTen 格式化TextView的文本
1.概要: TextView是Android提供的一个简单却功能强大的UI控件.读者可以在应用程序中通过多种方法使用不同样式的文本. 监管TextView并不支持所有HTML标签,但是用于格式 ...