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+DBM的同学录程序(2)
Oct 09 PHP
PHP中的正规表达式(一)
Oct 09 PHP
php error_log 函数的使用
Apr 13 PHP
php中json_decode()和json_encode()的使用方法
Jun 04 PHP
使用Smarty 获取当前日期时间和格式化日期时间的方法详解
Jun 18 PHP
ThinkPHP中的常用查询语言汇总
Aug 22 PHP
php关联数组快速排序的方法
Apr 17 PHP
PHP页面转UTF-8中文编码乱码的解决办法
Oct 20 PHP
完美解决在ThinkPHP控制器中命名空间的问题
May 05 PHP
PHP实践教程之过滤、验证、转义与密码详解
Jul 24 PHP
php成功操作redis cluster集群的实例教程
Jan 13 PHP
PHP递归统计系统中代码行数
Sep 19 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调用MsSQL Server 2012存储过程获取多结果集(包含output参数)的详解
2013/07/03 PHP
js关闭子窗体刷新父窗体实现方法
2012/12/04 Javascript
解析ScrollPic在ie8下只滚动一遍,然后变为空白 ie6,ie7,chrome,firefox正常
2013/06/26 Javascript
sliderToggle在写jquery的计时器setTimeouter中不生效
2014/05/26 Javascript
jQuery学习笔记之总体架构
2014/06/03 Javascript
Javascript中call与apply的学习笔记
2014/09/22 Javascript
PHP PDO操作总结
2014/11/17 Javascript
jQuery中empty()方法用法实例
2015/01/16 Javascript
AngularJS控制器controller正确的通信的方法
2016/01/25 Javascript
JavaScript的instanceof运算符学习教程
2016/06/08 Javascript
javascript中使用未定义变量或值的情况分析
2016/07/19 Javascript
利用浮层使select不可选的实现方法
2016/12/03 Javascript
RequireJs的使用详解
2017/02/19 Javascript
提高JavaScript执行效率的23个实用技巧
2017/03/01 Javascript
jQuery 中msgTips 顶部弹窗效果实现代码
2017/08/14 jQuery
微信小程序使用picker实现时间和日期选择框功能【附源码下载】
2017/12/11 Javascript
jquery 动态遍历select 赋值的实例
2018/09/12 jQuery
vue src动态加载请求获取图片的方法
2018/10/17 Javascript
使用puppeteer爬取网站并抓出404无效链接
2018/12/20 Javascript
原生js实现Flappy Bird小游戏
2018/12/24 Javascript
详解vue-cli3开发Chrome插件实践
2019/05/29 Javascript
jQuery实现放大镜案例
2020/10/19 jQuery
[06:14]《辉夜杯》外卡赛附加赛 4支战队巡礼
2015/10/23 DOTA
用python的requests第三方模块抓取王者荣耀所有英雄的皮肤实例
2017/12/14 Python
Python subprocess模块详细解读
2018/01/29 Python
Tensorflow实现酸奶销量预测分析
2019/07/19 Python
python3-flask-3将信息写入日志的实操方法
2019/11/12 Python
Pytorch之卷积层的使用详解
2019/12/31 Python
Python Selenium安装及环境配置的实现
2020/03/17 Python
python中pdb模块实例用法
2021/01/15 Python
党员倡议书
2015/01/19 职场文书
门卫岗位职责
2015/02/09 职场文书
奖学金申请个人主要事迹材料
2015/11/04 职场文书
2016年国庆节假期旅游工作总结
2016/04/01 职场文书
2019个人半年工作总结
2019/06/21 职场文书
Python开发简易五子棋小游戏
2022/05/02 Python