PHP缓冲区

Posted by chunpat on September 7, 2019

事由

上一篇文章中,写了关于nginx和php-fpm组合 请求超时的解决方案, 设置了保持长时间请求不断。但是,又遇到个问题就是缓冲区,需要边保持请求连接边打印东西 到浏览器。

解决

涉及php.ini属性概念与修改 output_buffering implicit_flush output_handler

cli模式的缓冲区强制不开启

output_buffering 为off implicit_flush 为on

php-fpm 才可以用php.ini的设置

默认设置是 output_buffering=4096,implicit_flush 为off,所以要缓冲区输出的话就要手动填充或者改配置,然后flush出来。

    for ($i = 0; $i< 10;$i++){
        ob_start();
        //查看执行情况
        echo '完成:' .$i . '/100' . PHP_EOL;
        echo str_repeat(" ", 1024 * 2);//人为将缓冲数据扩充到2k

        ob_end_clean();
        sleep(1);
    }

参考


Creative Commons License
本作品采用CC BY-NC-ND 4.0进行许可。转载,请注明原作者 chunpat 及本文源链接。