zoukankan      html  css  js  c++  java
  • 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连接没有断
        }
  • 相关阅读:
    0909我眼中的编译原理
    你要的所有数据源都在这里了!
    JAVA多线程和并发基础
    写的代码小有成就+今日总结--购买产品---20200508
    mysql数据库时区问题
    【Spring】——声明式事务配置详解
    SpringBoot整合阿里云OSS文件上传、下载、查看、删除
    一文看懂:网址,URL,域名,IP地址,DNS,域名解析
    git快速入门
    批处理框架spring batch基础知识介绍
  • 原文地址:https://www.cnblogs.com/codelifewangwen/p/3204533.html
Copyright © 2011-2022 走看看