关于sleep每隔1s输出

//详细解释链接

PHP FLUSH SLEEP 输出缓存控制详解 - (BACH) - 博客园



    /**
     * 实时输出打印
     * @param type $msg         需要打印的消息
     * @param type $datetime    是否打印时间
     * @param type $sleep       是否需要输出间歇时间
     * @param type $size        缓冲区大小 默认 4096
     * @param type $br          打印BR个数 默认2
     */
    function output($msg = "This is test.", $datetime = true, $sleep = true, $size = 4096, $br = 2) {
        if ($datetime) {
            echo date("Y-m-d H:i:s");
        }
        if (empty($size)) {
            $size = ini_get('output_buffering');
        }
        if (is_array($msg)) {
            var_dump($msg);
        } else {
            echo "  $msg";
        }
        for ($i = 0; $i < $br; $i++) {
            echo "<br/>";
        }
        echo str_pad('<div></div>', $size*100); //使缓冲区溢出 复制输出4096个字节
        ob_flush(); //释放php内置缓存
        flush(); //输出送出的缓冲内容 到浏览器
        if ($sleep === true) {
            sleep(1);
        } else if (is_numeric($sleep) && $sleep > 0) {
            sleep($sleep);
        } else {
            //不休息
        }
    }

/**

3s后输出

*/

for ($i = 0; $i < 3; $i++) {
    echo time() . date("Y-m-d H:i:s") . "<br/><br/>";
    sleep(1);
}


/**

每隔1s输出

*/

for ($i = 0; $i < 3; $i++) {

/**

在php中有个输出缓存控制,具体怎么解释的请百度一下

我这里php.ini  中 output_buffering=4096;

请自行测试改正

关于 关闭 缓冲区,output_buffering=off 

*/

    echo str_pad('<div></div>', 4096*100); //使缓冲区溢出 复制输出4096个字节
    echo time() . date("Y-m-d H:i:s") . "<br/><br/>";
    flush(); //输出送出的缓冲内容
    sleep(1);
}

在Nginx中,有个Nginx 缓冲区,可能会与php本身设置有冲突,所以存在在Nginx中无法实时输出的问题

如果以上代码不能有效运行,可参考以下代码

ob_end_clean();
ob_implicit_flush(1);
for ($i = 0; $i < 10; $i++) {
    echo str_repeat('<div></div>', 20000);//浏览器这个沙雕居然能存储数据了,这也是你感觉 //ob_flush() php 输送缓冲区内容无用的
    echo date("Y-m-d H:i:s").'   .....'.$i.'<br/>';
    sleep(1);
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值