检查那个方法的占用内存较大,批量导入。

导入数据1.5W,超内存,找原因。

memory_get_usage()  去找那个地方使用内存大,做优化。

注意**不要在循环里面实例化对象

找到了,果然还是代码问题。。

            $db = \Yii::$app->db;
            $transaction = $db->beginTransaction();
            try{
                $sum = count($result);
                foreach ($result as $index=>$row) {
                    if($index==0){
                        continue;
                    }
   
                    $item = $this->$constitute($row);

                    $sub_form[] = $item;
                    if(($index % 200) == 0 || ($index+1) == $sum){
                        $connection->createCommand()->batchInsert('___',
                            [
                                '_',//所有的字段
                            ],$sub_form)->execute();
                        unset($sub_form);
                    }
                }
                $transaction->commit();
            }catch (yii\db\Exception $e){
//                $new = $e->getMessage();
//                var_dump($new);die;
                $transaction->rollback();
                $returnArr['status'] = false;
                $returnArr['info'] = '导入失败!';
                return json_encode($returnArr);
            }
就这样算了。

猜你喜欢

转载自blog.csdn.net/u010895694/article/details/78131640