zoukankan      html  css  js  c++  java
  • PHP即时实时输出内容

    一般情况下,PHP都是将整个页面全部执行完成后,才会把要输出的内容发送回客户端。

    for ($i = 0; $i < 10; $i++) {
     echo $i;
     sleep(1);
    }
    

    这段代码会在十秒后输出“-12345678910”,

    如果要实现每秒实时输出一位可用以下两种方式:

    第一种

    设置执行时间不限时

    set_time_limit(0);

    清除并关闭缓冲,输出到浏览器之前使用这个函数。

    ob_end_clean();

    控制隐式缓冲泻出,默认off,打开时,对每个 print/echo 或者输出命令的结果都发送到浏览器。

    ob_implicit_flush(1);

    <?php
    ob_end_clean();
    ob_implicit_flush(1);
    for ($i=0; $i < 10 ; $i++) { 
        echo $i;
        //浏览器需要凑够一定的字节数才会输出
        echo str_repeat ( " " , 1024 ) ;
        sleep(1);
    }
    

    第二种

    ob_*系列函数, 是操作PHP本身的输出缓冲区.

    ob_flush()

    flush, 严格来讲, 这个只有在PHP做为apache的Module(handler或者filter)安装的时候, 才有实际作用.

    它是刷新WebServer(可以认为特指apache)的缓冲区.

    前者是把数据从PHP的缓冲中释放出来,后者是把不在缓冲中的或者说是被释放出来的数据发送到浏览器。

    flush()

    for ($i=0; $i < 10 ; $i++) { 
        echo $i;
        echo str_repeat ( " " , 1024 ) ;
         ob_flush ( ) ;
         flush ( ) ;
        sleep(1);
    }
    

    参考:

    深入理解ob_flush和flush的区别

  • 相关阅读:
    Form表单提交数据的几种方式
    前端基础-HTML
    python入门函数详解
    Python作业编写
    Python入门数据类型详解
    Jquery选择器
    做外链接和有外链接区别
    三层架构
    drop,delete,truncate区别
    run()和star()区别
  • 原文地址:https://www.cnblogs.com/hehecat/p/9695220.html
Copyright © 2011-2022 走看看