首页 > php > php的ob系列函数

php的ob系列函数

作者:bin

序言

什么是ob?
ob是php输出缓冲区,output buffering,注意不是output cashe。
我们仅仅是将输出暂存于ob中,而不是生成一个缓存,盲目的使用ob不会加快访问速度,反而会增加cpu的负担
ob的原理
将php的标准输出,放在ob中,在程序执行到最后会将ob中到内容放到程序缓存中,最后返回给浏览器
ob有能干什么?
1、防止在设置协议头、cookie前进行了输出,导致报错,如下:

Warning: Cannot modify header information - headers already sent by

2、捕捉一些不可获取的函数的数据结果,例如phpinfo(),会将结果直接打印,而我们有时只需要结果,而不是打印;
3、对输出内容进行处理,例如压缩,文本替换等;
4、生成静态文件,例如一些经常被访问对页面,我们不希望每次都执行php脚本,而是生成一个html;

常用函数

输出:输出至缓存,后在又缓存输出至浏览器
返回:将结果返回,例如:$data = ob_get_flush();

ob_statrt() //开启缓冲区

ob_clean() //删除缓冲区内容,不关闭缓冲区

ob_end_clean() //删除缓冲区,关闭缓冲区

ob_get_contents() //返回缓冲区内容

ob_get_clean() //获取缓冲区内容,关闭缓冲区

ob_flush() //输出缓冲区内容,不关闭缓冲区

flush() //将内容输出至浏览器,与ob_flush的区别,参考 http://www.laruence.com/2010/04/15/1414.html

ob_end_flush() //输出缓冲区内容,关闭缓冲区

ob_get_flush() //返回缓冲区内容,输出缓冲区内容,关闭缓冲区

ob_get_length() //返回缓冲区的长度

ob_get_level() //返回缓冲区的嵌套级别,连续2个ob_statrt(),将会嵌套,只是需要2个连续的ob_clean(),才能完全关闭缓冲区

ob_get_status() //返回当前缓冲区的状态

ob_gzhandler() //ob_start回调函数,用gzip压缩缓冲区的内容,例如:ob_start('ob_gzhandler');

ob_list_handlers() //列出所有hanlder,例如ob_gzhandler

这些函数的行为受php_ini设置的影响:
output_buffering //该值为ON时,将在所有脚本中使用输出控制;若该值为一个数字,则代表缓冲区的最大字节限制,当缓存内容达到该上限时将会自动向浏览器输出当前的缓冲区里的内容。
output_handler //该选项可将脚本所有的输出,重定向到一个函数。例如,将 output_handler 设置为 mb_output_handler() 时,字符的编码将被修改为指定的编码。设置的任何处理函数,将自动的处理输出缓冲。

您必须 [ 登录 ] 才能发表留言!