我正在使用更新函數,其中我將約40,000行插入到mysql數據庫。在創建該數組時,我出現內存不足錯誤(試圖分配41個字節)。php內存不足,數組闖入子陣列
最終的功能是這樣的:
function Tright($area) {
foreach ($area as $a1=>&$a2) {
mysql_query('INSERT INTO 0_right SET section=\''.$a2['sec_id'].'\', user_id=\''.$a2['user_id'].'\', rank_id=\''.$a2['rank_id'].'\', menu_id=\''.$a2['menu_id'].'\', droit = 1;');
}
}
我有兩個問題。上面的工作負載對於php來說太過自然了嗎?
如果沒有,任何人都可以建議我應該在哪裏檢查?如果是的話,有沒有辦法將$ area數組分割成子數組並執行函數,也許這樣我就不會解決內存不足的問題。任何其他解決方法?
謝謝你們。
編輯:@halfdan,@Patrick Fisher,你們倆都談過要做一個多插入查詢。你如何做到這一點,在這個例子中,請。
您使用的是什麼版本的PHP?循環使用SQL語句通常非常慢,您可能需要多次插入。你給了你的PHP實例多少內存? – halfdan 2011-03-09 23:01:42
您是否在談論這個問題> http://www.electrictoolbox.com/mysql-insert-multiple-records/ – 2011-03-09 23:13:22
我知道這是長時間關閉的,但問題在於foreach($ area爲$ a1 =>&$ a2)&會導致php記住所有$ a2數組。而且您甚至不使用@atrick Fisher的& – winkbrace 2012-11-06 15:51:27