Home > Backend Development > PHP Tutorial > PHP nested output cache example

PHP nested output cache example

*文
Release: 2023-03-18 14:48:01
Original
1151 people have browsed it

How does PHP implement nested output caching? This article mainly introduces PHP nested output caching code examples, and uses the ob series functions to solve nested output caching examples. I hope to be helpful.

PHP’s output cache can be nested. Use ob_get_level() to output the nesting level.
The test found that the output results are different under the cli and the browser (PHP5.4).

The manual instructions are as follows:

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
Copy after login

It is also very simple to output correctly:

ob_end_clean();
echo ob_get_level(); //0
Copy after login

Back to the topic:

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 &#39;level:&#39;.$a.&#39;,ouput:&#39;.$b.&#39;<br>&#39;;
echo &#39;level:&#39;.$c.&#39;,ouput:&#39;.$d.&#39;<br>&#39;;
echo &#39;level:&#39;.$e.&#39;,ouput:&#39;.$f.&#39;<br>&#39;;
Copy after login

The results are as follows:

level:1,ouput:php1
level:2,ouput:php2
level:3,ouput:php3
Copy after login

Of course, when you turn off a certain level of buffering, test as follows:

ob_end_clean();
 
ob_start();
echo &#39;php1&#39;;
$a = ob_get_level();
$b = ob_get_contents();
ob_clean();
 
ob_start();
echo &#39;php2&#39;;
$c = ob_get_level();
$d = ob_get_contents();
ob_end_clean();  //清空缓存并关闭缓存
 
ob_start();
echo &#39;php3&#39;;
$e = ob_get_level();
$f = ob_get_contents();
ob_clean();
 
echo &#39;level:&#39;.$a.&#39;,ouput:&#39;.$b.&#39;<br>&#39;;
echo &#39;level:&#39;.$c.&#39;,ouput:&#39;.$d.&#39;<br>&#39;;
echo &#39;level:&#39;.$e.&#39;,ouput:&#39;.$f.&#39;<br>&#39;;
Copy after login

The results are as follows:

level:1,ouput:php1
level:2,ouput:php2
level:2,ouput:php3
Copy after login

Related recommendations:

PHP caching mechanism

php caching tool class to implement web page caching

thinkPHP caching mechanism

The above is the detailed content of PHP nested output cache example. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template