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 相关文章推荐
vBulletin HACK----显示话题大小和打开新窗口于论坛索引页
Oct 09 PHP
PHP文本操作类
Nov 25 PHP
php 小乘法表实现代码
Jul 16 PHP
ThinkPHP3.1新特性之Action参数绑定
Jun 19 PHP
php实现图片文件与下载文件防盗链的方法
Nov 03 PHP
php获取当月最后一天函数分享
Feb 02 PHP
在php中设置session用memcache来存储的方法总结
Jan 14 PHP
php文件上传的两种实现方法
Apr 04 PHP
PHP jQuery+Ajax结合写批量删除功能
May 19 PHP
PHP编程实现阳历转换为阴历的方法实例
Aug 08 PHP
PHP判断json格式是否正确的实现代码
Sep 20 PHP
PHP实现关键字搜索后描红功能示例
Jul 03 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 @ at 记号的作用示例介绍
2014/10/10 PHP
PHP使用curl模拟post上传及接收文件的方法
2016/03/04 PHP
PHP中in_array的隐式转换的解决方法
2018/03/06 PHP
Thinkphp5.0 框架使用模型Model添加、更新、删除数据操作详解
2019/10/11 PHP
用cookies实现的可记忆的样式切换效果代码下载
2007/12/24 Javascript
event.srcElement 用法笔记e.target
2009/12/18 Javascript
express的中间件basicAuth详解
2014/12/04 Javascript
使用DNode实现php和nodejs之间通信的简单实例
2015/07/06 NodeJs
理解Javascript图片预加载
2016/02/23 Javascript
JQuery EasyUI学习教程之datagrid 添加、修改、删除操作
2016/07/09 Javascript
微信小程序教程系列之新建页面(4)
2017/04/17 Javascript
详解webpack打包vue时提取css
2017/05/26 Javascript
通过示例彻底搞懂js闭包
2017/08/10 Javascript
浅谈vue-router2路由参数注意的问题
2017/11/08 Javascript
简单实现jquery隔行变色
2017/11/09 jQuery
Vue 2.0学习笔记之使用$refs访问Vue中的DOM
2017/12/19 Javascript
js登录滑动验证的实现(不滑动无法登陆)
2018/01/03 Javascript
vue中使用vue-pdf的方法详解
2020/09/05 Javascript
JavaScript实现网页tab栏效果制作
2020/11/20 Javascript
推荐下python/ironpython:从入门到精通
2007/10/02 Python
Python和Ruby中each循环引用变量问题(一个隐秘BUG?)
2014/06/04 Python
小结Python用fork来创建子进程注意事项
2014/07/03 Python
Django实现图片文字同时提交的方法
2015/05/26 Python
python交互式图形编程实例(三)
2017/11/17 Python
Python实现多态、协议和鸭子类型的代码详解
2019/05/05 Python
详解python中的生成器、迭代器、闭包、装饰器
2019/08/22 Python
基于python计算并显示日间、星期客流高峰
2020/05/07 Python
Python项目跨域问题解决方案
2020/06/22 Python
Python异常处理机制结构实例解析
2020/07/23 Python
python爬虫数据保存到mongoDB的实例方法
2020/07/28 Python
什么是Web Service?
2012/07/25 面试题
J2EE面试题
2016/03/14 面试题
就业推荐自我鉴定
2013/10/06 职场文书
大学生就业推荐信范文
2013/11/29 职场文书
意向书范本
2014/07/29 职场文书
暂停营业通知
2015/04/25 职场文书