PHP嵌套输出缓冲代码实例


Posted in PHP onMay 12, 2015

PHP的输出缓存是可以嵌套的。用ob_get_level()就可以输出嵌套级别。
测试发现在cli和浏览器下输出结果不一样(PHP5.4)。

PHP嵌套输出缓冲代码实例

手册说明如下:

ob_get_level() will always return 0 inside a destructor.
This happens because the garbage collection for output buffers has already done before the destructor is called

想要正确输出也很简单:

ob_end_clean();

echo ob_get_level(); //0

回到正题:

ob_end_clean();

 

ob_start();

echo 'php1';//此处并不会在页面中输出

$a = ob_get_level();

$b = ob_get_contents();//获得缓存结果,赋予变量

ob_clean();

 

ob_start();

echo 'php2';//此处并不会在页面中输出

$c = ob_get_level();

$d = ob_get_contents();//获得缓存结果,赋予变量

ob_clean();

 

ob_start();

echo 'php3';//此处并不会在页面中输出

$e = ob_get_level();

$f = ob_get_contents();//获得缓存结果,赋予变量

ob_clean();

 

echo 'level:'.$a.',ouput:'.$b.'<br>';

echo 'level:'.$c.',ouput:'.$d.'<br>';

echo 'level:'.$e.',ouput:'.$f.'<br>';

结果如下:

level:1,ouput:php1

level:2,ouput:php2

level:3,ouput:php3

当然,当你关闭某个级别的缓冲,如下测试:

ob_end_clean();

 

ob_start();

echo 'php1';

$a = ob_get_level();

$b = ob_get_contents();

ob_clean();

 

ob_start();

echo 'php2';

$c = ob_get_level();

$d = ob_get_contents();

ob_end_clean();  //清空缓存并关闭缓存

 

ob_start();

echo 'php3';

$e = ob_get_level();

$f = ob_get_contents();

ob_clean();

 

echo 'level:'.$a.',ouput:'.$b.'<br>';

echo 'level:'.$c.',ouput:'.$d.'<br>';

echo 'level:'.$e.',ouput:'.$f.'<br>';

结果如下:

level:1,ouput:php1

level:2,ouput:php2

level:2,ouput:php3
PHP 相关文章推荐
php 分页函数multi() discuz
Jun 21 PHP
php数组函数序列之in_array() - 查找数组中是否存在指定值
Nov 07 PHP
php的$_FILES的临时储存文件与回收机制实测过程
Jul 12 PHP
php根据年月获取季度的方法
Mar 31 PHP
php下获取http状态的实现代码
May 09 PHP
50个PHP程序性能优化的方法
Jun 02 PHP
php实现的css文件背景图片下载器代码
Nov 11 PHP
Smarty模板引擎缓存机制详解
May 23 PHP
PHP单链表的实现代码
Jul 05 PHP
php禁用cookie后session设置方法分析
Oct 19 PHP
浅析PHP7 的垃圾回收机制
Sep 06 PHP
thinkPHP+LayUI 流加载实现功能
Sep 27 PHP
php实现修改新闻时删除图片的方法
May 12 #PHP
php跨服务器访问方法小结
May 12 #PHP
php一个解析字符串排列数组的方法
May 12 #PHP
PHP获取远程图片并保存到本地的方法
May 12 #PHP
PHP IDE PHPStorm配置支持友好Laravel代码提示方法
May 12 #PHP
php解析xml方法实例详解
May 12 #PHP
php实现统计网站在线人数的方法
May 12 #PHP
You might like
PHP写的资源下载防盗链类分享
2014/05/12 PHP
JQuery的AJAX实现文件下载的小例子
2013/05/15 Javascript
浅谈JavaScript之事件绑定
2013/07/08 Javascript
复制js对象方法(详解)
2013/07/08 Javascript
CSS3+JavaScript实现翻页幻灯片效果
2017/06/28 Javascript
详解基于Node.js的微信JS-SDK后端接口实现代码
2017/07/15 Javascript
vue的一个分页组件的示例代码
2017/12/25 Javascript
详解React Native 屏幕适配(炒鸡简单的方法)
2018/06/11 Javascript
Vue实现表格中对数据进行转换、处理的方法
2018/09/06 Javascript
js计算两个日期间的天数月的实例代码
2018/09/20 Javascript
vue源码中的检测方法的实现
2019/09/26 Javascript
图解JS原型和原型链实现原理
2020/09/15 Javascript
vue项目中企业微信使用js-sdk时config和agentConfig配置方式详解
2020/12/15 Vue.js
python正则分组的应用
2013/11/10 Python
使用Python编写类UNIX系统的命令行工具的教程
2015/04/15 Python
用Python的Django框架来制作一个RSS阅读器
2015/07/22 Python
python tensorflow基于cnn实现手写数字识别
2018/01/01 Python
对python判断ip是否可达的实例详解
2019/01/31 Python
使用Python爬取弹出窗口信息的实例
2020/03/14 Python
Python如何进行时间处理
2020/08/06 Python
python实现简单的学生管理系统
2021/02/22 Python
西班牙电子产品购物网站:Electronicamente
2018/07/26 全球购物
eDreams加拿大:廉价航班、酒店和度假
2019/03/29 全球购物
Java如何支持I18N?
2016/10/31 面试题
财务情况说明书范文
2014/05/06 职场文书
关于读书的演讲稿
2014/05/07 职场文书
数据保密承诺书
2014/06/03 职场文书
经济贸易专业自荐信
2014/06/11 职场文书
公司法人授权委托书范本
2014/09/12 职场文书
预备党员群众路线思想汇报2014
2014/10/25 职场文书
2015年试用期工作总结
2014/12/12 职场文书
财务稽核岗位职责
2015/04/13 职场文书
晚会开幕词范文
2016/03/04 职场文书
制定企业培训计划的五大要点!
2019/07/10 职场文书
图解排序算法之希尔排序Java实现
2021/06/26 Java/Android
Go语言基础切片的创建及初始化示例详解
2021/11/17 Golang