教程集 www.jiaochengji.com
教程集 >  脚本编程  >  php  >  正文 PHP嵌套输出缓存的例子

PHP嵌套输出缓存的例子

发布时间:2016-10-10   编辑:jiaochengji.com
教程集为您提供PHP嵌套输出缓存的例子等资源,欢迎您收藏本站,我们将为您提供最新的PHP嵌套输出缓存的例子资源
说到缓存估计大家会想到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.'<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输出缓冲及其应用的例子
php的flush和ob_flush无效问题解决办法
django如何使用session
深入理解php中ob_flush与flush的区别
OutputBuffer(输出缓冲)函数的妙用
php缓存函数简介
php页面缓存的例子(减经cpu与mysql负担)
php函数ob_start()、ob_end_clean()、ob_get_contents()
CodeIgniter框架中启用和清除缓存的教程

[关闭]
~ ~