关于PHP flush()缓存输出的应用

归档: 学习酷文

关于PHP flush()缓存输出的应用


经过几轮测试,个人总结有效方法有两种。百度智能云, 天翼云已经测试过了。


第一种:


        

    public function get_data() {
        set_time_limit(0);  
        ignore_user_abort(true);
        header('X-Accel-Buffering: no');  
        $k = 0;
        $arr = [];
        for($i = 0; $i < 10000; $i++) {
            $arr[] = $i;
        }
        
        foreach($arr as $key =>$value) {
            $j = round($key/count($arr), 2)*100;
            if($j == 80) {
                return json(['code' => 1, 'msg' => '错误', 'row' => $key]);
            }
            if($j != $k && floor($j) == $j) {
                $k = $j;
                echo 'str';
                ob_flush();
                flush();
            }
        }
        return json(['code' => 0, 'msg' => '完成']);
    }


用header + echo + ob_flush() + flush()  的方式输出。

header('X-Accel-Buffering: no');   

---------------------------------  

echo 'str';
ob_flush();
flush();



第二种:



    public function show_msg($msg) {
        echo $msg.' '.str_repeat(' ', 1024*4).'';
        ob_flush();
        flush();
        usleep(10000);
    }



用字符串占满缓冲器输出

echo $msg.' '.str_repeat(' ', 1024*4).'';    -->看服务器设置缓存大小,设置冲出大小

------------------------------------------

ob_flush();
flush();



参考手册: 《PHP参考手册


2022-09-20 01:07:40

黯赏雅亭|ASYT - 应用中心

Copyright @ 2018 - 2024 黯赏雅亭|ASYT -- 傲世衍天 版权所有 渝ICP备19008745号-2