我总是看到一个内存耗尽错误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