PHP之buffer讲解

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()        - 冲刷出(送出)输出缓冲区内容缓冲并关闭输出缓冲    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值