PHP缓存 flush与ob_flush

PHP缓存主要分为程序缓存ob缓存
1)程序缓存无法关闭(一直开启);
2)Output buffering可以通过php.ini文件进行配置(设置output_buffering=?,具体:Off: 表示关闭PHP输出缓存;On: 打开无限大的输出缓存;4096: 打开大小为4096Byte的输出缓存);
3)也可以通过 ob_start()手动激活php output_buffering机制,使得即便输出超过了1kb数据,也不真的把数据交给tcp传给浏览器,因为ob_start()将php buffer空间设置到了足够大,ob缓存ob缓存只有直到脚本结束或者调用ob_end_flush函数,才会把数据发送给客户端浏览器。

程序缓存中内容没法修改,但Output buffering中内容可以修改,修改完成后全部发给程序缓存。下面举例说明:
1.默认情况下,未开启ob缓存,此时:PHP处理模块一边处理程序,一边将处理结果发送到程序缓存。在程序执行结束,会把程序缓存中的数据发送给浏览器。
<?php
echo "ssss";//默认消息头与"ssss" 发送到程序缓存
header("content-type:text/html;charset=utf-8");//报警告。原因:此前程序缓存中已有默认消息头,且无法修改,此时再次发送消息头,导致报警告
echo "zzzz";
?>

2.在程序中使用ob_start将output buffer开启,此时,所有的echo输出都会保存到ob缓存中,可以使用ob系列函数进行操作
<?php
ob_start();//开启ob缓存
echo "ssss";//默认消息头与"ssss" 发送到**output buffer**
header("content-type:text/html;charset=utf-8");//修改消息头
echo "zzzz";//"zzzz"发送到**output buffer**
?>
程序执行完后,output buffer将消息发送给程序缓存,程序缓存再发送给浏览器

PHP缓存相关函数:

ob_start() //开启缓存

ob_clean() //清空缓存

ob_end() //关闭ob缓存

ob_end_clean() 清空缓存并关闭ob缓存,不发送给客户端浏览器

ob_end_flush() //刷新缓存,并关闭缓存,但发送给客户端浏览器

ob_get_contents() //以字符串形式获得缓存内容

file_put_contents(“test.log”,$contents) //将缓存内容打印到文本

ob_flush() //刷新缓存(将ob缓存现有内容输出到程序缓存)

flush() 把程序缓存内容推送到浏览器

flush与ob_flush**区别**:
    flush()是把程序缓存中的内容送到浏览器缓存中;
    ob_flush()是把ob缓存中的内容放到程序缓存;

1.PHP输出缓存(output_buffering)小记http://www.cnblogs.com/zemliu/archive/2012/05/11/2495293.html
2.php中ob缓存机制 http://www.cnblogs.com/hanyouchun/p/4058994.html
3.影响 PHP 行为的扩展 http://www.php.net/manual/zh/outcontrol.configuration.php
4.PHP 中flush()与ob_flush()的区别http://blog.csdn.net/jasenmark/article/details/30249925

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值