2016-11-30 61 views
-1

我們在生成多維數組時遇到了問題。將80k個別數組推入多維數組,在PHP中引發500錯誤

我們試圖從數據庫中獲取80k記錄,並使用以下格式推入數組。

while($singleArray = $resultSet->FetchRow()) 
{ 
$multiArray[$singleArray['id']]['field1'] = $singleArray['field1']; 
$multiArray[$singleArray['id']]['field2'] = $singleArray['field2']; 
$multiArray[$singleArray['id']]['field3'] = $singleArray['field3']; 
$multiArray[$singleArray['id']]['field4'] = $singleArray['field4']; 
} 

$ multiArray是一個多維數組,$ singleArray是結果集中的單個記錄。

我們使用while循環來生成最終數組($ multiArray)。執行進入該循環後,服務器發送500錯誤。我們沒有得到任何錯誤,直到結果集大小爲15k。

爲了克服這個錯誤,我們在腳本的頂部添加了以下行。

ini_set('memory_limit', '1024M'); 

這是正確的解決方案嗎?請讓我知道,謝謝。

+0

你是否真的需要一次在內存中的所有內容? – 2016-11-30 09:33:27

+0

爲什麼在同一時間需要PHP中的很多條目?通常最好只是獲取數據庫中所需和/或聚合的條目。 – Sirko

回答

1

提高內存限制是處理大量數據的最常見解決方案。你也可能想提高執行時間。

set_time_limit(amount_of_seconds); 

// Or disable the time limit 
set_time_limit(0); 

我確實想知道爲什麼你需要這個數組中的所有記錄。我們可以幫助您思考更快更清潔的解決方案。

注意:我不建議在瀏覽器中執行此代碼。如果你正在運行處理這麼多行的腳本,我建議使用終端。