0
我保存了大量的數據(模型中有很多模型嵌套不同類型的關聯)。我從外部Web服務得到這個數據和馬歇爾之後我試圖挽救與交易:CakePHP 3.x Transacction - 沒有足夠的RAM
$this->connection()->transactional(function() use ($entities) {
foreach ($entities as $entity) {
$this->save($entity);
}
});
我目前遇到的probleam是我的PHP進程正在運行內存不足。我的php.ini配置爲128M。
是否有可能在不使用事務處理的情況下減少保存實體的數據的負載?
謝謝。
您試圖通過單個事務刷新未知數量的記錄 - 這種情況出於多種原因並不好,其中一個原因是內存不足。更明智的做法是在單筆交易中刷新10,50或100條記錄。基本上:分成多次交易並分批發送10,50,100(或者用數字進行實驗以擊中甜點)。 – Mjh
嗨@Mjh,我怎麼能從CakePHP 3.x視圖來處理這個問題?你能否提供一個示例或鏈接到文檔,可以解釋我如何分割它?我會嘗試在沒有交易的情況下保存,只是在正常情況下。 – Tzaoh
您的'$ entities'是一組數據。循環瀏覽它,將其分成50個記錄,並使用您在問題中發佈的代碼。 – Mjh