我試圖用CakePHP 2.1的方法saveMany()
保存超過10000條記錄的列表。但它給了我一個500錯誤,或者一個「內存耗盡」的致命錯誤。使用CakePHP的saveMany保存> 10000條記錄()
如果我在處理完整個數組後調試整個數組(所以,沒有調用save方法),時間小於0.05s。但是,當我添加保存方法($this->saveMany($save, array('validate' => false));
)時,它會顯示我上面的錯誤之一。
我提到我在MySQL和PHP中使用InnoDB作爲我的存儲引擎作爲腳本語言。
我在做什麼錯,我該如何解決這個問題?
編輯
我回來這個問題,因爲我「解決」爲什麼那龐大的記錄數不保存。原因是......好,甚至沒有一條記錄被保存。我測試過只保存生成數組中的第一個元素,這就是它發生的情況:它會增加內存直到極限,然後死亡。我把它放在2GB內存的本地主機上,它仍然給我超過內存的錯誤。這很奇怪,我不明白爲什麼會發生這種情況。在另一個模型上應用的相同代碼按預期工作。我重新創建了模型和它的表格,但沒有成功。我能想到的唯一原因是表名的長度,但對我來說沒有意義。爲了保存單個記錄,什麼會產生這種內存增加?
你需要多久做一次? 10000條記錄來自哪裏?您需要提供更多信息,以便人們可以建議其他方法。 – Henri 2012-03-04 14:39:27
我正在爲我的應用程序構建一個緩存,以便每當我需要檢索並計算一些數據時,我只需從這些10000中獲取幾條記錄。我只需手動執行幾次。所以腳本的唯一要求是實際工作。 – linkyndy 2012-03-04 14:43:31
更新了我的答案。你有沒有訪問MySQL控制檯? – Henri 2012-03-04 15:04:11