1 引言
php文件的处理方式一般为:语法解析-->编译-->运行,有时候为了提高页面的响应速度,我们往往会把程序静态化。将php文件静态化,这里我们需要了解一下页面的响应过程,如下图所以,如果开启了buffer的话,php会先将处理的内容储存到buffer中,等buffer满了或程序执行结束后再通过tcp传送给用户。
2 开启buffer的两种方式
通过配置文件php.ini开启
output_buffering = on
手动开启
<?php
ob_start();
?>
3 常用的函数
3.1 获取buffer里的内容
ob_get_contents()
使用案例
<?php
ob_start();
echo 'hello world';
$buffer = ob_get_contents();
file_put_contents('log.txt',$buffer);
?>
通过浏览器访问可以看到 ‘hello world’字符串
而log.txt储存了‘hello world’字符串
3.2 清空buffer
ob_clean()
使用案例
<?php
ob_start();
echo 'hello world';
$buffer = ob_get_contents();
file_put_contents('log.txt',$buffer);
ob_clean();
?>
通过浏览器访问不输出任何内容
而log.txt储存了‘hello world’字符串
3.3 获取buffer内容并情况buffer
ob_get_clean()
<?php
ob_start();
echo 'hello world';
$buffer = ob_get_clean();
file_put_contents('log.txt',$buffer);
?>
通过浏览器访问不输出任何内容
而log.txt储存了‘hello world’字符串
4 拓展
ob_get_length() - 返回输出缓冲区的长度
ob_get_level() - 返回输出缓冲区的嵌套级别
ob_get_status() - 返回输出缓冲区的状态(数组形式返回,默认返回最顶层,参数为true时返回所有)
ob_end_clean() - 清空(擦除)缓冲区并关闭输出缓冲
ob_get_flush() - 以字符串返回输出缓冲区内容并关闭缓冲
ob_end_flush() - 冲刷出(送出)输出缓冲区内容缓冲并关闭输出缓冲