zoukankan      html  css  js  c++  java
  • PHP ob缓冲区函数的使用

    常用ob系函数:

    • ob_start() - 把输出内容先输出到缓冲区,而不是到浏览器。
    • ob_get_contents() - 返回输出缓冲区的内容
    • ob_flush() - 冲刷出(送出)输出缓冲区中的内容,php output_buffering机制中缓冲的buffer内容满了后把缓冲区的内容输出到客户端。[因此通常需要结合flush()一起使用]
    • ob_clean() - 清空(擦掉)输出缓冲区
    • ob_end_flush() - 冲刷出(送出)输出缓冲区内容并关闭缓冲,在output_buffering机制,通常需要结合flush()一起使用。
    • ob_end_clean() - 清空(擦除)缓冲区并关闭输出缓冲,等效删除缓冲区
    • flush() - 刷新输出缓冲,立即把缓冲区的内容输出到客户端。

    ob_flush()或ob_end_flush()和 flush() 通常一起使用:

    eg:

    ob_flush();
    flush();

    常见使用步骤:

    ob_clean(); // 必须放到ob_start() 之前,否则会出现乱码。
    //开启缓冲区
    ob_start();
    
    ......
    echo ...
    echo ...
    ......
    
    //获取缓冲区的内容
    $str = ob_get_contents();
    
    # 在使用过程中可调用ob_clean();来清除缓冲区内容
    
    //输出缓冲区内容
    ob_flush(); 
    flush();
    
    //关闭缓冲区
    ob_end_clean();

    基本原则:

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

    常见应用场景:

    • 防止在浏览器有输出之后再使用setcookie()、header()或session_start()等发送头文件的函数造成的错误。
    • 捕捉对一些不可获取的函数的输出,比如phpinfo()。
    • 对输出的内容进行处理。例如进行gzip压缩,例如进行简繁转换,例如进行一些字符串替换。
    • 生成静态文件,其实就是捕捉整页的输出,然后存成文件。经常在生成HTML,或者整页缓存中使用。
  • 相关阅读:
    js秒换成天时分
    vuex
    匹配iPhoneX
    ASP 解析json
    WPF 实现多语言支持
    c# 用DotNetZip来解压/压缩文件
    WPF UI Close button
    VB 获取所有窗体菜单信息
    ASP/ASP.NET/VB6文件上传
    c# 上传图片到一个外链相册服务器
  • 原文地址:https://www.cnblogs.com/zwesy/p/12133191.html
Copyright © 2011-2022 走看看