php缓冲区,php执行动态输出进度

单行、唯一 1     2105      服务端   0     0
之前试过缓冲区,但是有 一个浏览器不行,今天改信息又想用到,调试了半天,查资料,是说输出的字节不够,所以加了一句str_pad('',4096)."\n";就可以了
public function actionPinYin() {
    if (ob_get_level() == 0){
        ob_start();
    }
     $zones = Zone::find("alpha=''")->getAll();
     $i = 0;
     foreach ($zones as $zone){
         $py = Helper_Spell::getPinYin($zone->fullname,2);
         $zone->spell = $py;
         $zone->alpha = substr($py,0,1);
         $zone->save();
         $i++;
         echo $zone->alpha . $zone->name . $zone->spell . "-ok
"; echo str_pad('',4096)."\n"; ob_flush(); flush(); } ob_end_flush(); exit(); }


echo str_pad('',4096)."\n";  这一句很重要!



后续来来📅2021年10月12日更新:

这样也行:

$buffer = ini_get('output_buffering');
echo str_repeat(' ',$buffer+1); //防止浏览器缓存
ob_end_flush(); //关闭缓存
for( $i=1; $i<=10; $i++ ){
    echo '第 '.$i.' 次输出.'."
\n"; flush(); //刷新缓存(直接发送到浏览器) sleep(1); } echo '输出完毕!';


ob_end_flush(); //关闭缓存

//todo

flush();

 再不行多加个:

ob_end_flush(); //关闭缓存

//todo

ob_flush();
flush();





单行、唯一  
1楼
这个挺有意思的
captcha
忘记密码? 注册
第三方登录
微信赞赏
支付宝赞赏