• 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,或者整页缓存中使用。
  • 相关阅读:
    git提交代码到远程仓库github
    git报错记录
    关于VSCode的一些设置
    css之列表数据前加上小方框
    EChats使用报错之 《"TypeError: Cannot read property 'getAttribute' of undefined"》
    EChats使用之给图表加箭头以及渐变
    vue报错之(Do not use v-for index as key on <transition-group> children)
    在vue项目中使用mock模拟数据
    Vue项目中关于EChats的使用
    使用mock数据实现登录时的一次bug记录
  • 原文地址:https://www.cnblogs.com/zwesy/p/12133191.html
Copyright © 2020-2023  润新知