我總是看到一個內存耗盡錯誤PHP致命錯誤:268435456個字節允許內存大小耗盡
PHP Fatal error: Allowed memory size of 268 435 456 bytes exhausted
在我的日誌文件。
即使當服務器非常輕載&在本地主機上不可重現時,此錯誤也會隨機出現。我有一個來自hostgator的VPS 4服務器,負載爲MB。 PHP配置允許高達256 Mb。
的代碼如下
function func_select_array($qry)
{
$i=0;
$data=array();
$qry_result=mysql_query($qry);
if($qry_result)
{
while ($row=mysql_fetch_assoc($qry_result))
{
$data[$i] = $row;
$i++;
}
return $data;
}
else
{
return 2;
}
}
function func_check_rule_out_bid($auc_id,$bid_amount,$return_freq,$recheck)
{
$bid_qry="select * from tbl_bid where ubaid='".$auc_id."' and ubf='1' order by uba desc limit 0,10";
$bid_array=func_select_array($bid_qry);
}
表tbl_bid有2800條記錄。 我在func_select_array函數內的while循環中得到內存耗盡錯誤。 我無法想象這個查詢需要256M +。它似乎不是一個PHP的問題,但在MySQL中的東西。請幫助...
你到底在哪一行發生錯誤。並放心,是有關PHP,而不是MySQL。如果它是mysql,那麼服務器不會返回結果。但是你應該驗證你是否發送了正確的查詢。 – hakre 2012-04-24 19:48:57
2800記錄可能是確定的。每個記錄的大小是多少?他們是否包含「BLOB」? – 2012-04-24 19:51:20
業務的第一順序是重新創建錯誤。如果沒有,記錄一切。如果可能的話,在內存用完之前記錄查詢,'mysql_num_rows()','memory_get_peak_usage()'的結果和其他任何內容。然後,下次發生這種情況時,您可以查看它試圖迭代的查詢和記錄數量。你可能會發現一些你通常不會期望的東西。 – 2012-04-24 20:22:47