PHP 使用分页方法修改多数据字段

 

这个标题听起来很别扭,需求是这样的。mysql中的customer表有5000条数据。现在要给customer表添加一个order_num 字段,客户每下单一次就update这个字段+1.

是的,新增加的字段只要之后客户完成下单就会+1,问题是,之前客户下过多少单子,也要同步到order_num。

所以,思路就是这样的。如果一次取出5000的客户,循环每一个客户在去order表查找订单个数。估计set_time_limit就超时了,然后呢,想起了php的分页请求,等一个limit 分页大小的数据请求修改完成后,在分页请求下一页的数据进行修改。

伪代码:

  $page=  isset($_GET["page"])?$_GET["page"]:'';  # 当前第N分页
        if(!$page){
            $page=1;
        }
          echo "当前第{$page}页<hr>";

        $pageSize=3;  # 分页大小
        $offset=$page==1?0:($page-1)*$pageSize;  # 当前offset
        
        sleep(5); # 睡眠5秒,模拟后台程序执行
        echo "select * from customer where 1=1 limit {$pageSize} offset {$offset}  <hr>";  
        if($page*$pageSize>13){  # count 为空 更新完成
            echo '更新完成';
            exit();
        }

         $page++;      
      echo   $url="/crontab/customer-order-num?page={$page}";
      echo "<script> window.location.href='{$url}'; </script>";

 

Yii2 分页更新字段订单量:

       $page = isset($_GET["page"]) ? $_GET["page"] : '';  # 当前第N分页
        if (!$page) {
            $page = 1;
        }
        echo "当前第{$page}页<hr>";

        $pageSize = 3;  # 分页大小
        $offset = $page == 1 ? 0 : ($page - 1) * $pageSize;  # 当前offset

        sleep(3); # 睡眠5秒,模拟后台程序执行
        $customerModel = \common\models\Customer::find()->offset($offset)->limit($pageSize)->all();  # LIMIT 3 OFFSET 3   三的倍数
        if (!empty($customerModel)) {
            foreach ($customerModel as $value) {
                $orderCount = \common\models\Order::find()->where("cid=:cid and status=3")->params(["cid" => $value->id])->count(); # 订单之和 状态3:完成
                if ($orderCount) {
                    \common\models\Customer::updateAll(["order_num" => $orderCount], "id={$value->id}");
                }
            }
        } else {  # count 为空 更新完成
            echo '更新完成';
            exit();
        }

        $page++;
        echo $url = "/crontab/customer-order-num?page={$page}";
        echo "<script> window.location.href='{$url}'; </script>";
    }

 

 

 

 

 

转载于:https://www.cnblogs.com/dcb3688/p/4608038.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值