addAll 分批插入200万条数据时挂掉

浏览:2489 发布日期:2015/09/05 分类:求助交流 关键字: thinkphp 3.2.2 addAll
thinkphp版本 3.2.2
想用TP插入一些测试数据到mysql5.6,开始插入100万条记录没问题。
后来我想插入200万测试数据的时候,试了好多次都不成功,这段代码没有任何输出,也没有捕获到任何异常,到数据库里查看时,有时候插入了115万条,有时候插入1105000条.......每次插入的条数都不一样,但都没到200万条。本人刚用tp个把月,还请大家帮忙看看这段代码有什么问题,谢谢谢!public function test(){
        G('begin');
        try{
            $openid = 'testopenid_';
            $unionidid = 'testunionid_';
            $addtime = date('Y-m-d H:i:s', time());
            $size = 0;
            for($i=0; $i<2000000; $i ++){
                $size ++;
                $action = rand(1, 10);
                $points[] = array(
                    'openid' => ($openid.$i),
                    'unionid' => ($unionidid.$i),
                    'action' => $action,
                    'addtime' => $addtime,
                );
                if($size == 5000){ // 内存已经调到最大 128M 一次差不多能插如 5000 条
                    $res = M('pointsHistory2m')->addAll($points);
                    if($res){
                        unset($points);
                        $size = 0;
                    }else{
                        exit(M('pointsHistory2m')->getDbError());
                    }
                }
            }
            if(isset($points) && !empty($points)){
                $res = M('pointsHistory2m')->addAll($points);
                if($res){
                    unset($points);
                }else{
                    exit(M('pointsHistory2m')->getDbError());
                }
            }
        }catch (Exception $e){
            $error = $e->getMessage();
            exit($error);
        }
        G('end');
        echo $res.': '.G('begin','end').'s';
    }
最佳答案
评论( 相关
后面还有条评论,点击查看>>