本文实例讲述了PHP基础之输出缓冲区。分享给大家供大家参考,具体如下: 一、概念当缓冲区满了、或者PHP运行完毕、或者在必要时候进行输出,才会将数据输出到浏览器,此缓冲数据的区域称为PHP的输出缓冲区(OB)。 二、原理echo、 print_r之类的会输出数据的代码(实际上许多函数都会产生输出),PHP就会将要输出的数据放到PHP自身的缓冲区,等待输出;输出缓冲区层的行为跟你使用的SAPI(web或cli)相关,不同的SAPI可能有不同的行为。
三、输出缓冲区的配置
output_buffering注意,以上三个值不能在运行时使用ini_set()改这几个选项的值。关于PHP CLI方式执行时的配置,与FPM不太一样,有几点需要注意的是:
①ob_gzhandler : 使用ext/zlib压缩输出;
③ob_iconv_handler : 使用ext/iconv转换字符编码;
⑤ob_[inflate/deflate]_handler : 使用ext/http压缩输出;
四、输出缓冲区相关方法 ob_clean(); ?/删除内部缓冲区的内容,不关闭缓冲区(不输出)。 ob_end_clean(); ?/删除内部缓冲区的内容,关闭缓冲区(不输出)。 ob_get_clean(); ?/返回内部缓冲区的内容,关闭缓冲区。 ob_flush(); //发送缓冲区内容到下一层,删除缓冲区内容,不关闭缓冲区。 ob_end_flush(); //发送缓冲区内容到下一层,删除缓冲区的内容,关闭缓冲区。 ob_get_flush(); //返回缓冲区的内容,并关闭缓冲区,再释放缓冲区的内容。 ob_get_contents(); //返回缓冲区的内容,不输出。 ob_get_length(); //返回缓冲区的长度,如果缓冲区未被激活,则返回FALSE。 ob_get_status() ; ?/得到所有输出缓冲区的状态。 ob_implicit_flush(); //打开/关闭绝对刷送。 五、输出缓冲区的应用在session、cookie、header等设置函数之前开启:
出现这个错误的原因是, 在header之前已经输出了某些数据,而输出这些数据的同时, 服务器将会同时发送一个响应状态到浏览器上(既然有输出,即这个请求是有效的),而其后你又再次使用header函数
2、 控制PHP程序的下载功能:php缓存技术总结》、《php面向对象程序设计入门教程》、《PHP基本语法入门教程》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。
查看更多关于PHP基础之输出缓冲区基本概念、原理分析的详细内容...