PHP语言之输出缓冲控制
小标 2018-07-04 来源 : 阅读 798 评论 0

摘要:本文主要向大家介绍了PHP语言之输出缓冲控制,通过具体的实例向大家展示,希望对大家学习php语言有所帮助。

本文主要向大家介绍了PHP语言之输出缓冲控制,通过具体的实例向大家展示,希望对大家学习php语言有所帮助。

1.简介

    从php脚本echo(print、print_r...)内容之后,是如何显示给用户的呢,下面看看流程:

    echo、print => php output_buffering => webServer buffer => browser buff => browser display

即:脚本输出 => php的缓冲区设置 => 系统的缓冲区设置(apache、nginx) => 浏览器的缓冲区设置 => 显示给用户

    当PHP脚本有输出时,输出控制函数可以用这些来控制输出。这在多种不同情况中非常有用,尤其是用来在脚本开始输出 数据后,发送http头信息到浏览器。输出控制函数不影响由 header() 或 setcookie()发送的文件头信息,仅影响象 echo这样的函数和PHP代码块间的数据。

 

2.php.ini配置

输出控制配置选项

PHP语言之输出缓冲控制

   

output_buffering boolean/integer

该选项设置为 On 时,将在所有的脚本中使用输出控制。如果要限制输出缓冲区的最大值,可将该选项设定为指定的最大字节数(例如 output_buffering=4096)。从PHP 4.3.5 版开始,该选项在 PHP-CLI 下总是为 Off。

output_handler string

该选项可将脚本所有的输出,重定向到一个函数。例如,将 output_handler 设置为 mb_output_handler() 时,字符的编码将被修改为指定的编码。设置的任何处理函数,将自动的处理输出缓冲。

implicit_flush boolean

默认为 FALSE。如将该选项改为 TRUE,PHP 将使输出层,在每段信息块输出后,自动刷新。这等同于在每次使用 print、echo 等函数或每个 HTML 块之后,调用 PHP 中的 flush() 函数。

不在web环境中使用 PHP 时,打开这个选项对程序执行的性能有严重的影响,通常只推荐在调试时使用。在 CLI SAPI 的执行模式下,该标记默认为 TRUE。

 

3.常用相关函数

    void    flush(void);                                               //冲刷服务器缓冲内容

    bool    ob_start([callback $fun, int $size, bool $erase]);         //新建一个缓冲区

    void    ob_clean(void);                                            //清空缓冲区内容

    void    ob_flush(void);                                            //冲刷缓冲区内容

    string  ob_get_contents(void);                                     //返回缓冲区的内容

    bool    ob_end_clean(void);                                        //清空缓冲区内容并关闭缓冲区

    bool    ob_end_flush(void);                                        //冲刷缓冲区内容并关闭缓冲区

 

4.小例子

    4.1,关闭PHP缓冲区,随时输出
    ob_end_clean();      //关闭默认缓冲区
    echo 'hello ';
    flush();             //刷新服务器缓冲
    sleep(3);
    echo  'world';       //3秒后输出world
    flush();
 
    4.2,启用PHP缓冲区,主动刷新缓冲
    //每秒输出一句hello world
    ob_end_clean();                 //关闭默认缓冲区
    ob_start();                     //打开新的缓冲区
    for($i = 0; $i < 10; $i ++){
        sleep(1);
        echo 'hello world <br />';
        ob_flush();
        flush();
    }
    ob_end_clean();                 //关闭缓冲区
   
    4.3,保存回显内容到文件
    ob_end_clean();                     //关闭默认缓冲区
    ob_start();                         //打开新的缓冲区
    print_r($_SERVER);                  //放入内容到缓冲区
    $data = ob_get_contents();          //得到缓冲区内容
    ob_end_clean();                     //清空并关闭缓冲区
    file_put_contents('txt', $data);    //写入内容到文件

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标编程语言PHP频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved