编程爱好者之家

php分批更新数据

2018-02-28 19:06:14 239

有的时候我们可能会遇到要刷新数据的操作,但是一次更新太多数据的话会使出现502的现象,那么我们常用到的方法就是批量自动刷新。

我最近就遇到要批量下载远程图片到本地然后更新图片地址到数据库,代码如下

public function dowm(){
    $page = isset( $_GET['page'] )?$_GET['page']:1;

    $model = M("xcx_collect");

    if( $page <= 560 ){
        $limit = ($page - 1) * 10 . "," . 10;
        $pageSize = ceil(5600/10);
        $xcxCollectList = $model->field("ID,icon,qrcode,images")
                          ->where("flag=0")->order("ID desc")->limit($limit)->select();
        foreach($xcxCollectList as $key=>$value){
            $where['ID'] = $value["id"];
            $images = str_replace(PHP_EOL,",",trim($value['images']));
            $images = $this->downpic($images);
            $data['images'] = str_replace(",",PHP_EOL,trim($images));
            $data['icon'] = $this->downpic($value['icon']);
            $data['qrcode'] = $this->downpic($value['qrcode']);
            $data['flag'] = 1;
            $model->where($where)->save($data);

        }
        echo '<meta http-equiv="refresh" content="0;url=/Home/Xcx/dowmPic?page='.($page+1).'">正在处理数据,总共页数为'.$pageSize.'......';
    }
}

其中dowmpic()为我的下载远程图片的方法,详情见(http://www.codelovers.cn/article/20180228190457.html

主要原理就是少选出需要批量更新的数据,然后执行update操作,用

 echo '<meta http-equiv="refresh" content="0;url=/Home/Xcx/dowmPic?page='.($page+1).'">正在处理数据,总共页数为'.$pageSize.'......';

这条使浏览器自动刷新就可以

同类文章