PHP-OB缓存

使用php自己的缓存机制

下面的用下面的代码引入

<?php
    echo 'ob1';
    header("Content-type:text/html;charset=utf-8");
    echo 'ob2';
    echo 'ob3';

就这样一段简单的代码在php5.2以上的版本中是没有错误的,如果是5.2以下的就会出现一个warning的警告错误,这是你需要在php.ini中配置output_buffering,默认是关闭的;如果关闭就会出现上面的错误,这里只要把ob缓存打开就好,开启ob缓存的方法有两种

1.配置php.ini文件output_buffering=4096

2.直接在程序中ob_start();

这样问题解决但是不知道具体啥原因,首先分析一下ob缓存的机制

ob缓存的几个基本原则:

1.如果ob缓存打开,则echo的数据首先放在ob缓存.
2.如果是header信息,就直接放在程序缓存
3. 当页面执行到最后,会把ob缓存的数据,放到程序缓存,然后一次返回给浏览器

如图有具体的说明

假如你没有开启ob缓存,那么程序是是这样执行的

这样的话不符合http请求协议

但是如果开启ob缓存的话

下面是一些关于ob缓存的有关函数

ob_start();//开启缓存

ob_clean();清空ob缓存中的数据

ob_end_clean();清空ob缓存中的数据并且关闭ob缓存

ob_flush();把ob缓存数据,刷新到程序缓存,不关闭ob缓存

ob_end_flush();刷新到程序缓存,同时关闭ob缓存

ob_get_contents();获取ob缓存中的数据

最后给大家分享一段很神奇的代码

<?php
    echo str_repeat(' ',1024);//注意' '里面是空格
    for($i=0;$i<5;$i++){
    echo $i;
      flush();//把程序缓存的数据,强制刷新到浏览的缓存里面
      sleep(1);//休眠1秒,在sleep这个过程中http连接没有断
    }
原文地址:https://www.cnblogs.com/codelifewangwen/p/3204533.html