我有一些代碼循環處理從數據庫接收到的數據,但問題是內存耗盡。我的內存限制設置爲128 MB。爲我的測試返回的總行數約爲200k。所以我不知道它是否只是太多的數據,或者是否有辦法緩衝表格,而不是一次存儲整個內存。內存因PHP循環通過查詢數據而枯竭
內存耗盡錯誤在while語句開始的行被拋出。
$queryResult = $dbCon->prepare($sqlQuery);
$queryResult -> bindParam(':field1', $field1);
$queryResult -> bindParam(':field2', $field2);
$queryResult -> bindParam(':field3', $field3);
$queryResult -> execute();
$allData = array();
$i=0;
while ($row = $queryResult->fetch(PDO::FETCH_ASSOC))
{
foreach ($row as $sKey=>$vVal)
{
if($i == 0)
{
$this->allHeaders[] = $sKey ;
}
$allData[ $i ][ $sKey ] = $vVal;
}
$i++;
}
你應該問「如何處理200K(+)行」 ......與否。 – djot
緩衝區是什麼?你是否同時需要所有的數據,或者你只是要處理來自每一行的東西,然後扔掉其他所有東西? –