php专区

 首页 > php专区 > PHP高级 > 缓存异常处理 > PHP输出缓冲技术介绍

PHP输出缓冲技术介绍

分享到:
【字体:
导读:
         摘要:PHP输出缓冲(Output Buffering)是指PHP把所有即将要发送到到浏览器中的内容暂时放在缓冲区中,在整个PHP程序执行完后再把缓存区的内容输出...

PHP输出缓冲技术介绍

PHP输出缓冲(Output Buffering)是指PHP把所有即将要发送到到浏览器中的内容暂时放在缓冲区中,在整个PHP程序执行完后再把缓存区的内容输出。

PHP中有关缓冲的内置函数,几乎都以 ob_  开头。另外,在PHP的配置文件php.ini中,有output buffering指令,一般是关闭的,我们用到它的时候再手动开启(如果开启,则在所有php程序中都会执行缓冲)。

我们在什么时候用到缓冲呢?一般是在设置session和cookie的时候用到,因为它们之前不能有输出,所有要启用输出缓冲机制。

一、启用、结束缓冲功能—— ob_start() 、 ob_end_flush()

在外面要用到缓冲的时候,可一通过ob_start()开启缓冲,然后结束缓冲,用ob_end_flush()。几个常用的函数:

ob_flush() ——  提前发送缓冲,将ob_start()与ob_flush()之间的输出提前(在整个php程序结束之前)发送到浏览器中。

ob_clean() —— 清除缓存,在ob_start()与ob_clean()之间的输出缓冲将不会被发送到浏览器显示出来。

ob_end_clean() ——  和ob_clean()一样清除之前的缓冲,区别之处在于:它会结束整个缓冲功能,所有在它之后的输出内容不会被放入缓冲区中。

ob_start()可以多层次嵌套使用,可以开启一个大的缓冲,然后根据需要清除某一块的缓冲。

二、取得缓冲内容—— ob_get_contents()

我们要得到某些输出,但是不想让它在浏览器中显示出来,可以先得到所有的缓冲内容,然后在清除缓存。例如:

ob_start();

echo  'luchanghong';

$name = ob_get_contents();

$length = ob_get_length();

ob_end_clean();

随后我们可以得到输出缓冲的内容,它保存在$name中,另外ob_get_lehgth()可以得到输出缓冲的长度。

smarty模板中的fetch方法中用到了ob_get_contents()来实现的。

PHP输出缓冲技术介绍
分享到:
PHP缓存原理以及smarty缓存
PHP缓存原理以及smarty缓存 前面学习过PHP缓冲技术,今天学习PHP的缓存技术,虽然一字之差,却也能说“谬以‘十’里”。 一、PHP缓存原理 当我们访问一个网站时,查询或者登陆,都会和通过数据库获得信息。像一个很大的门户网站,每日访问量上百万、千万,数据流通量是庞大的,所以通过PHP缓存技术能避免一些频繁而...
常见的PHP缓存技术分析[概念版]
常见的PHP缓存技术分析[概念版]  在大部份情况下我们的网站都会使用数据库作为站点数据存储的容器。当你执行一个SQL查询时,典型的处理过程是:连接数据库->准备SQL查询->发送查询到数据库->取得数据库返回结果->关闭数据库连接。但数据库中有些数据是完全静态的或不太经常变动的,缓存系统会通过把SQL查询的结果缓存到一...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……