我仍然遇到Cake的Mempry使用問題。我讀了很多威脅,並嘗試了1000件事情,但沒有什麼幫助。 我使用CakePHP 2.4.x.使用MySQLdB。我編寫了一個API來從數據庫中選擇日誌數據。我做了一個測試來解釋我多麼困惑。我有一個選擇返回與11列1400行。我的一般內存使用(使用memory_get_usage)大約是4MB。 後,我選擇具有:CakePHP的內存分配問題
$condition = array('conditions'=> array(
'LogBackend.created_at between ? AND ?' => array(
$this->params['url']['from'],$this->params['url']['to']
)));
$this->data = $this->LogBackend->find('all', $condition).
我的內存使用量只是爆炸比9MB以上。數據依然沒有任何回報或任何工作。只是選擇。那麼9MB並沒有那麼多,但如果我選擇更多,就應該有可能圍繞100k行左右。我的256MB空間不足。 有人可以告訴我這種荒謬的內存使用的原因?
問候
您是否在使用可容忍的行爲?你是否在某處設置了'$ recursive'? – Nunser
你真的需要在內存中有100k行嗎?你不能限制你的查詢使用有限的一組數據嗎?或者使用循環選擇,處理和清理數據?這不是一個CakePHP內存問題,它是一個方法問題。 – cernunnos
@cernunnos我同意,當然取決於具體目的,這可以以不同的方式實現。但是,國際海事組織在這裏不是沒有責任。 CakePHP模型總是以數組的形式返回結果,導致整個記錄集被加載到內存中。例如,如果OP想要實現導出功能,那麼通過標準的CakePHP模型是不可能的。創建使用[無緩衝查詢]的自定義模型/數據源(http://php.net/manual/en/mysqlinfo.concepts.buffering.php)可能是一個解決方案。 – thaJeztah