在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/PHP  數(shù)據(jù)庫/ php內存問題

php內存問題

代碼如下

$num = M('log')->where("date_format(create_time,'%Y-%m') = '$date'")->count('id');

    for($i = 0; ($i+5000)<=20000;$i += 5000){

        $datas = M('credit_log')->where("date_format(create_time,'%Y-%m') = '$date'")->limit($i,$i+5000)->select();
        echo $this->convert(memory_get_usage(true)).'<br/>';
        unset($datas);
        //sleep(5);
    }
    
    

循環(huán)幾次之后,內存溢出,為什么會內存溢出?因為unset函數(shù)沒有釋放內存?

回答
編輯回答
撥弦

limit($i,5000)

2017年6月18日 04:31
編輯回答
蟲児飛

你好,這就要根據(jù)PHP垃圾回收機制說起了
首先PHP的垃圾收回機制是引用計數(shù),然后實現(xiàn)自動清除,當你賦值一個變量的時候,PHP并不一定會去直接申請內存地址,因為PHP會有一個預留的地址空間,當此空間占滿之后才回去申請,unset之后依據(jù)PHP的垃圾回收機制不會自動立刻實現(xiàn)回收,有的unset之后還會保留內存空間一段時間,因此得知

2018年3月15日 17:47
編輯回答
茍活

即使你已經進行變量銷毀了,但是有兩個問題,一,你的內存全部釋放了嗎?二,你確定 5000 * 5000 的數(shù)據(jù)量沒有關系么? limit 的參數(shù),1 是從第幾個開始,后面的參數(shù)是獲取多少條數(shù)據(jù)。

2018年4月21日 01:05