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加MYSQL服务器
Oct 09 PHP
MySQL相关说明
Jan 15 PHP
php调用mysql数据 dbclass类
May 07 PHP
PHP 防注入函数(格式化数据)
Aug 08 PHP
nginx+php-fpm配置文件的组织结构介绍
Nov 07 PHP
php中DOMElement操作xml文档实例演示
Mar 26 PHP
保存到桌面、设为桌面且带图标的PHP代码
Nov 19 PHP
经典PHP加密解密函数Authcode()修复版代码
Apr 05 PHP
PHP程序员不应该忽略的3点
Oct 09 PHP
php根据用户语言跳转相应网页
Nov 04 PHP
Yii使用smsto短信接口的函数demo示例
Jul 13 PHP
PHP实现打包zip并下载功能
Jun 12 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 文件扩展名 获取函数
2009/06/03 PHP
ajax php传递和接收变量实现思路及代码
2012/12/19 PHP
PHP使用SWOOLE扩展实现定时同步 MySQL 数据
2017/04/09 PHP
javascript innerText和innerHtml应用
2010/01/28 Javascript
中国地区三级联动下拉菜单效果分析
2012/11/15 Javascript
cument.execCommand()用法深入理解
2012/12/04 Javascript
Jquery多选下拉列表插件jquery multiselect功能介绍及使用
2013/05/24 Javascript
JS日期和时间选择控件升级版(自写)
2013/08/02 Javascript
JS获取时间的方法
2015/01/21 Javascript
浅谈JavaScript数据类型
2015/03/03 Javascript
jquery左右全屏大尺寸多图滑动效果代码分享
2015/08/28 Javascript
详解jQuery UI库中文本输入自动补全功能的用法
2016/04/23 Javascript
canvas实现探照灯效果
2017/02/07 Javascript
vue2.0使用Sortable.js实现的拖拽功能示例
2017/02/21 Javascript
jQuery的Ajax接收java返回数据方法
2018/08/11 jQuery
echarts.js 动态生成多个图表 使用vue封装组件操作
2020/07/19 Javascript
Vue axios 跨域请求无法带上cookie的解决
2020/09/08 Javascript
Python加pyGame实现的简单拼图游戏实例
2015/05/15 Python
Python守护进程和脚本单例运行详解
2017/01/06 Python
flask使用session保存登录状态及拦截未登录请求代码
2018/01/19 Python
python实现的汉诺塔算法示例
2019/10/23 Python
在Keras中利用np.random.shuffle()打乱数据集实例
2020/06/15 Python
解决keras模型保存h5文件提示无此目录问题
2020/07/01 Python
html5 Canvas画图教程(3)—canvas出现1像素线条模糊不清的原因
2013/01/09 HTML / CSS
意大利奢侈品购物网站:Giglio
2018/01/05 全球购物
幼教毕业生自我鉴定
2014/01/12 职场文书
意外伤害赔偿协议书范本
2014/09/28 职场文书
幸福来敲门观后感
2015/06/04 职场文书
老乡会致辞
2015/07/28 职场文书
2016形势与政策学习心得体会
2016/01/12 职场文书
传单、海报早OUT了,另类传单营销方案送给你!
2019/07/15 职场文书
导游词之绍兴柯岩古镇
2020/01/09 职场文书
MySQL update set 和 and的区别
2021/05/08 MySQL
JavaScript小技巧带你提升你的代码技能
2021/09/15 Javascript
css3中2D转换之有趣的transform形变效果
2022/02/24 HTML / CSS
什么是clearfix (一文搞清楚css清除浮动clearfix)
2023/05/21 HTML / CSS