• 技术文章 >php教程 >PHP源码

    PHP嵌套输出缓存的例子

    2016-06-08 17:20:39原创620
    说到缓存估计大家会想到ob_start函数吧,但如果要做到嵌套输出缓存的话我们是需要使用另一个函数了,下面一起来看看吧。

    PHP的输出缓存是可以嵌套的。用ob_get_level()就可以输出嵌套级别。

    测试发现在cli和浏览器下输出结果不一样(PHP5.4)。

    ob_level1.png手册说明如下:

    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.'
    ';
    echo 'level:'.$c.',ouput:'.$d.'
    ';
    echo 'level:'.$e.',ouput:'.$f.'
    ';

    结果如下:

    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.'
    ';
    echo 'level:'.$c.',ouput:'.$d.'
    ';
    echo 'level:'.$e.',ouput:'.$f.'
    ';

    结果如下:

    level:1,ouput:php1
    level:2,ouput:php2
    level:2,ouput:php3

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

    前端(VUE)零基础到就业课程:点击学习

    清晰的学习路线+老师随时辅导答疑

    自己动手写 PHP MVC 框架:点击学习

    快速了解MVC架构、了解框架底层运行原理

    专题推荐:level ob ouput echo get
    上一篇:php面向对象之工厂模式示例 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • ❤️‍🔥共22门课程,总价3725元,会员免费学• ❤️‍🔥接口自动化测试不想写代码?• PHP实现301跳转,及延时跳转代码• php 列出目录与删除目录实例代码• php 模拟用户抓取网页内容程序• 高亮显示搜索结果代码• php入门教程-留言板程序
    1/1

    PHP中文网