PHP跑大批量数据脚本代码

代码基于thinkphp,linux环境,php7.2,亲测了100万数据。

 

命令:

php  /home/data/laofan/public/index.php   index/test/run   1>/home/data/laofan/public/run.log    2>/home/data/laofan/public/run_err.log

 

完整脚本代码:

<?php

namespace Index\Controller;

/**
 *  处理大批量数据脚本
 *  依然范儿特西
 *
 */

use Think\Controller;
use Think\Log;

class TestController extends Controller
{
    public function index()
    {
        echo 'hello  laofan'.PHP_EOL;
        $page = 1;
        while($page <= 50) {
            echo $page.PHP_EOL;
            $page ++ ;
        }
    }

    //亲测100万条数据
    public function run()
    {
        $author_uid = '123';
        $limit_num = 1000; //每页处理条数
        //页码
        $page = 1;
        //100万数据,每次处理1000条,所以要处理1000次
        while($page <= 1000) {
            $this->toRun($author_uid,$page,$limit_num);
            $page ++ ;
        }
    }


    private function toRun($author_uid,$page,$limit_num){
        echo "开始执行, 数据来源:".$author_uid." 第".$page.'页,预处理数目:'.$limit_num.PHP_EOL;

        set_time_limit(0);

        $page_start = ($page-1) * $limit_num;

        $data_list = M("table_name")
            ->field('id, other')
            ->where(['author_uid'=>$author_uid])
            ->limit($page_start,$limit_num)
            ->select();

        if(!empty($data_list)){
            foreach ($data_list as $key=>$value) {
                try {
                    //执行操作
                    echo "success".json_encode($value);    
                } catch (\Exception $e) {
                    echo '警告: 此数据异常:'.json_encode($value);
                    
                    continue;
                }
            }
            echo "处理完成,实际处理数目:".count($data_list).PHP_EOL;
            unset($data_list);
        }else{
            exit('无数据执行');
        }

    }



}
    A+
发布日期:2021年01月11日 11:43:46  所属分类:PHP
最后更新时间:2021-01-11 11:43:46
头像
  • ¥ 298.0元
  • 市场价:899.0元
  • ¥ 818.0元
  • 市场价:1688.0元
  • ¥ 29.99元
  • 市场价:888元
  • ¥ 199.0元
  • 市场价:299.0元

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: