PHP睡眠功能前回声,不工作(PHP echo before sleep function, not

2019-08-31 22:24发布

我想在浏览器中(每次)睡眠功能之前输出回波执行。

下面的代码无法正常工作

    set_time_limit(0);
    ob_implicit_flush(1);
    ob_start();
    echo "Start<Br>";
    ob_flush();

    for($i=0;$i<10;$i++){
        $randSlp=rand(1,3);
        echo "Sleeping for ".$randSlp." second. ";
        ob_flush();

        sleep($randSlp);
    }
    ob_end_flush(); 

如果取消注释str_repeat比浏览器功能
第一次:开始睡了1秒。 睡3秒。
第二次:睡2秒。 睡2秒。

并继续...

是可能的回波无需逐一str_repeat()函数,为什么输出不显示每一次。

Answer 1:

试试下面的代码和它的工作。

header( 'Content-type: text/html; charset=utf-8' );
header("Cache-Control: no-cache, must-revalidate");
header ("Pragma: no-cache");
set_time_limit(0);
ob_implicit_flush(1);
//apache_setenv('no-gzip', 1);
//ini_set('zlib.output_compression', 0);
//ini_set('implicit_flush', 1);
for ($i = 0; $i < 10; $i++) { 
    $randSlp=rand(1,3);
    echo "Sleeping for ".$randSlp." second. ";;
    sleep(1);
    if(ob_get_level()>0)
       ob_end_flush(); 
}


Answer 2:

即使输出缓冲器(ob_ *函数)不一定给出输出到浏览器直接。

首先尝试调用flush()之前或之后ob_flush()

二,看是否mod_gzip的还是要用zlib.output_compression被开启的例子。 这也将缓存所有的输出。

如果使用IIS服务器,而不是Apache的,也可能是在IIS中设置检查。



文章来源: PHP echo before sleep function, not working
标签: php sleep