ob缓冲简介(PHP output buffering)
来源:互联网 发布:网上白家乐有软件分析 编辑:程序博客网 时间:2024/05/18 13:23
ob缓冲简介(PHP output buffering)
ob的打开和关闭
可以通过php.ini中配置 output_buffering
参数为 [boolean]/[integer] 该选项设置为 On 时,将在所有的脚本中使用输出控制。如果要限制输出缓冲区的最大值,可将该选项设定为指定的最大字节数(例如 output_buffering=4096,这也是推荐和默认的值)。从PHP 4.3.5 版开始,该选项在 PHP-CLI 下总是为 Off。
ob缓冲原理
关闭ob缓冲的时候的图
关闭ob缓冲时,执行php代码的时候,会把输出的内容放到php**程序缓冲**中,在脚本执行完毕的时候,会全部返回给浏览器.
默认情况下,打开ob缓冲的时候的原理
开启ob缓冲的时候,所有的输出都会首先被放到ob缓冲中,但是需要注意由header()和setcookie()发送的文件头信息不会受到ob缓冲的影响,依然保存在程序缓存中.在脚本执行完毕后,ob缓冲中的内容会被放到程序缓存的内容后面(append追加),在返回给浏览器.
注意:程序缓存不由PHP程序员控制.
关于OB的常用函数
- ob_start() 开启一个ob缓冲
- ob_get_contents() 获取缓存中的数据
- ob_clean() 清空缓存中的数据
- ob_flush() 送出缓冲区的内容(如果里边有内容的话)。如果想进一步处理缓冲区中的内容,必须在ob_flush()之前调用ob_get_contents() ,因为在调用ob_flush()之后缓冲区内容将被丢弃。
- ob_end() 关闭ob缓存
- ob_end_clean() 清空缓存并关闭ob缓存(ob_flush+ob_end)
- flush() 刷新PHP程序的缓冲,而不论PHP执行在何种情况下(CGI ,web服务器等等)。该函数将当前为止程序的所有输出发送到用户的浏览器。
从几个案例来加深对ob的理解
案例 : 只使用php代码,完成网页每秒打印一个数字.
方法1(不使用ob缓冲的情况下):
方法2(开启ob缓冲的情况下):
值得注意的点
ob不影响由 header() 或 setcookie()发送的文件头信息,仅影响象 echo这样的函数和PHP代码块间的数据(包含php文件中的html代码和通过include和require加载的代码)。
header() 必须在任何实际输出之前调用,不管是普通的 HTML 标签,还是文件或 PHP 输出的空行,空格。在ob打开的情况下,header()会首先被加载到程序缓存中,其他的输出都是在脚本执行完毕的时候,才会由ob缓冲追加到程序缓存中,所以保证了header()在这些输出之前.不会产生什么问题.
如果关闭了ob,需要注意这一点.
- ob缓冲简介(PHP output buffering)
- php ob(output buffering)系列函数详解
- php缓冲--ob缓冲
- php缓冲---ob缓冲深入
- output buffering vs string concatenation / ob vs 拼接字符串
- php的页面静态化技术 ob(out_put buffering)
- PHP ob缓冲浅析与理解
- PHP ob缓冲浅析与理解
- ob缓冲
- ob缓冲
- python output buffering
- 双缓冲 Double Buffering
- ob缓冲实例
- php ob
- PHP输出缓冲控制(Output Control)总结
- php 输出缓冲控制(Output Control )
- Cannot use output buffering in output buffering display handlers
- IO缓冲,php中的ob缓冲机制,以及socket、curl、fopen这些函数的底层关系
- 手把手教你在win10系统上安装、配置MySQL 5.7.19数据库
- Session的活化与钝化
- MD5加密
- Java虚拟机是如何处理异常的?
- leetcode[Detect Capital]//待整理多种解法
- ob缓冲简介(PHP output buffering)
- linux学习之旅(十七)& 系统启动及出错恢复
- 支持向量机SVM入门(四)
- 请回答1988
- 首页实现_头部广告页
- H5实现视频监控网络直播时前端自动适配
- 关于HDFS理解
- HDU 4923 Room and Moor【栈】【想法】
- SVM另讲