您的位置:首页 > 其它

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

2017-09-29 10:45 337 查看
导入数据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);
}
就这样算了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: