鍍金池/ 問答/PHP/ tp3 循環(huán)使用數(shù)組添加操作add方法導(dǎo)致內(nèi)存不斷增加

tp3 循環(huán)使用數(shù)組添加操作add方法導(dǎo)致內(nèi)存不斷增加

    G('begin');
    $model = M('test_data');
    $list = M('test_ids')->getField('id',true);
    foreach ($list as $k => $v) {
        $data = [];
        $data['params'] = $this->params;
        $temp_arr = $this->post($this->url,$data);

        $json_data = json_encode($temp_arr);
        $a_data = [];
        $a_data['json_data'] = $json_data;
        $model->add($a_data);
        unset($a_data);
        G('end');
        echo G('begin','end','m').'kb'.'<br>';

    }
    
    
    代碼運(yùn)行結(jié)果:
 
    

圖片描述

當(dāng)我把$model->add()注釋掉的時(shí)候,結(jié)果如下
圖片描述

請(qǐng)問為什么tp3的add方法會(huì)導(dǎo)致內(nèi)存不斷增加?

回答
編輯回答
離觴

將model放入到foreach的遍歷里面,然后unset實(shí)例化的model

G('begin');
    
    $list = M('test_ids')->getField('id',true);
    foreach ($list as $k => $v) {
        $model = M('test_data');
        $data = [];
        $data['params'] = $this->params;
        $temp_arr = $this->post($this->url,$data);

        $json_data = json_encode($temp_arr);
        $a_data = [];
        $a_data['json_data'] = $json_data;
        $model->add($a_data);
        unset($a_data);
        G('end');
        echo G('begin','end','m').'kb'.'<br>';
        unset($model);
    }
2017年2月19日 04:25
編輯回答
寫榮

循環(huán)里面的十幾次數(shù)據(jù)庫(kù)插入操作消耗的啊,還是用批量插入吧

2017年2月6日 04:07
編輯回答
茍活

這種情況還是換成SQL語(yǔ)句,直接插入吧。循環(huán)中應(yīng)該盡量避免SQL操作。

2017年4月2日 00:40