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' .调 ...
随机推荐
- 【COCI2012】覆盖字符串
[题目描述] 给出一个长度为N的小写字母串,现在Mirko有M个若干长度为Li字符串.现在Mirko要用这M个字符串去覆盖给出的那个字符串的.覆盖时,必须保证:1.Mirko的字符串不能拆开,旋转:2 ...
- jquery中的cookie使用
一.检测cookie是否启用 通过navigator.cookieEnabled这个属性实现,若该值为true,则当前cookie是启用的,反之是禁用的,注意:此属性不是一个标准的属性 二.cooki ...
- wdcp挂载数据盘为WWW以及之后出现的各种问题解决方法
昨天晚上突然有客户反映服务器访问不了,经检查后是因为磁盘满了! 购买阿里云的ECS选择linux系统的时候会赠送20G的系统盘,通常来讲自己用的话基本够了,但是我们作为网络公司,安装了一个WDCP后给 ...
- 682. Baseball Game 棒球游戏 按字母处理
[抄题]: You're now a baseball game point recorder. Given a list of strings, each string can be one of ...
- Java 实现分页功能
driver=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/test?allowMultiQueries=true&useUnic ...
- spring aop自动代理注解配置之一
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...
- Flask解决跨域
Flask解决跨域 问题:网页上(client)有一个ajax请求,Flask sever是直接返回 jsonify. 然后ajax就报错:No 'Access-Control-Allow-Origi ...
- Maven——依赖
一.依赖的范围 依赖的范围有几个可选值,我们用得到的是:compile.test.provided 三个. [1]从项目结构角度理解 compile 和 test 的区别 [2]从开发和运行这两个不同 ...
- App测试从入门到精通之安装、卸载和运行测试
关于手机App测试需要说的点有很多.目前市场上主要的APP测试主要是针对的是安卓.和苹果两大主流操作系统.主要考虑的就是功能性.兼容性.稳定性.性能测试等.我们看下App的安装和卸载有哪些常用的场景: ...
- 设计模式06: Adapter 适配器模式(结构型模式)
Adapter 适配器模式(结构型模式) 适配(转换)的概念无处不在:电源转接头.电源适配器.水管转接头... 动机(Motivation)在软件系统中,由于应用环境的变化,常常需要将“一些现存的对象 ...