PHP 进度条

PHP做进度条时,可以用 ob_flush(); flush(); 两个函数来刷新缓存,将缓存中的信息发往浏览器。但要注意很多服务器会积累满4k左右的内容才发送,所以可以通过填充空格( echo str_pad('', 4096); )来强制刷新。

   public function insert($data,$html)
    {
        echo $html;
        $i = 0;
        $sum = count($data);
        if($sum == 0){
            echo "数据出错";
            return;
        } 
        $noped = 0;
        try { 

               foreach($data as $v){ 
                    $tdata[] = $v;
                    $i++;
                    if( $i%20==0 || $i==$sum-1){ 
                        $ret = $this->btrManger_m->inserts100($tdata); //一次插入100条
                        if($ret){ 
                            $s = $i/$sum*100;
                            echo str_pad('', 4096); //填充缓存
                            echo "<script> setProgressBar(".($s).");</script>";
                            ob_flush();
                            flush();
                        }
                        else{ //出错 终止
                            break;
                        }
                        $tdata = array();
                    } 
            }
        } catch (Exception $e) {
            echo $e; 
            return;
        }
        $resultStr = "'共计".$sum."条记录,成功操作完成".$i."条!'";
        echo "<script> setText(".$resultStr.");</script>";
    }

前端用bootstrap的进度条实现:

function setProgressBar(width){
    str=width+"%";
    $('.progress-bar').attr('aria-valuenow',str).css('width',str) .html(str);
    if(width == 100){
        $('#idInsertResult').html("数据操作完成!");
    }
}
<div class="progress">
    <div class="progress-bar progress-bar-info progress-bar-striped active" role="progressbar" aria-valuenow="0" aria-valuemin="1" aria-valuemax="100" style="width: 3%;">
               0%
    </div>
</div>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值