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

来源:互联网 发布:java jar 打包依赖jar 编辑:程序博客网 时间:2024/06/06 16:43

导入数据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);            }就这样算了。

阅读全文
0 0
原创粉丝点击