php tp3.2 脚本大量数据操作思路

30 篇文章 0 订阅
public function update_point(){
        ini_set('memory_limit','3072M');    // 临时设置最大内存占用为3G
        set_time_limit(0);   // 设置脚本最大执行时间 为0 永不过期
        $pageSize = 1000;
        $i = 0;
        $j = 0;
        $t = 0;
        for ($x = 1; $x >= 0; $x++) {
            $payok = M('pay_ok', 'cy_')
                ->field(['id', 'amount','gameid', 'regagent'])
                ->page($x, $pageSize)
                ->select();
            $total = count($payok);
            $t +=$total;
            if ($total == 0) break;

            foreach ($payok as $one) {
                $gameid = $one['gameid'];
                $regagent = $one['regagent'];
                if (!empty($gameid) && !empty($regagent)) {
                    $point = getAgentPoint($gameid, $regagent);
                    M('pay_ok', 'cy_')->where(['id' => $one['id']])->save([
                        'point' => $point,
                        'agent_amount' => ($one['amount'] * $point / 100),
                    ]);
                    $i++;
                } else {
                    $j++;
                }
            }

            // 停留500毫秒
            usleep(500);
        }

        echo "总数:".$t."<br>";
        echo "更新成功数:".$i."<br>";
        echo "不用更新的数:".$j."<br>";
    }
public function gift(){
        set_time_limit(0);
        $sql = "select a.*,b.key from cy_ct_game_gift_package a left join cy_ct_game_gift_key b on a.id=b.gift_id where a.game_id=180 and a.status=1 and type=0 group by a.id,b.key";
        $res = M()->query($sql);
//        print_r($res);
//        exit;
        foreach($res as $one){
            $key = $one['key'];
            $id = $one['id'];
            unset($one['key']);
            unset($one['id']);

            if(!empty($key)){
                //1. 生成一个公会礼包
                $one['type'] = 1;
                M('game_gift_package','cy_ct_')->add($one);

                $newId = M()->getLastInsID();

                //2. 公会礼包生成9999个礼包key
                $data = [];
                $max = 9999;
                for($i=0;$i<$max;$i++){
                    $d['gift_id'] = $newId;
                    $d['key'] = $key;
                    $data[] = $d;
                }

                $arr = array_chunk($data,5000);
                foreach($arr as $chunkArr){
                    M('game_gift_key','cy_ct_')->addAll($chunkArr);
                    sleep(1);
                }


                //3. 一般礼包也生成9999个礼包key
                $data = [];
                $max = 9999;
                for($i=0;$i<$max;$i++){
                    $d['gift_id'] = $id;
                    $d['key'] = $key;
                    $data[] = $d;
                }
                $arr = array_chunk($data,5000);
                foreach($arr as $chunkArr){
                    M('game_gift_key','cy_ct_')->addAll($chunkArr);
                    sleep(1);
                }

            }
        }
    }

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值