我最近在做了一些代码更改后得到了这条消息。收到消息后,我检查了代码,然后循环效率低下。我将文件恢复原样,但我仍然收到错误代码。但我仍然得到同样的信息,但我不明白为什么。
我的代码如下。
function sqlquery($query = "") {
if (empty($query)) {
return false;
}
if (empty($this->CONN)) {
return FALSE;
}
$conn = $this->CONN;
$result = mysql_query($query, $conn)or $this->error("Something wrong in query<hr>$query<hr>");
if (!$result) {
$this->error("something wrong in query");
return FALSE;
}
if (preg_match("/^select/i", $query)) {
$count = 0;
$data = array();
while ($row = mysql_fetch_assoc($result)) {
$data[$count] = $row;
$count++;
}
mysql_free_result($result);
return $data;
} else {
return mysql_insert_id();
}
}
答案 0 :(得分:1)
我最近在做了一些代码更改后得到了这条消息。收到消息后,我检查了代码,然后循环效率低下。我将文件恢复原样,但我仍然收到错误代码。但我仍然得到同样的信息,为什么?
因为你的程序仍在尝试使用太多内存。可能是因为你没有真正恢复你的代码,可能是因为你确实还原了你的代码但系统正在运行某种需要清除的选择代码缓存(apc等),或者可能是因为它不仅仅是您的代码,它也是您的程序与之交互的数据类型。
暂时记住你的记忆(看起来你现在正处于64M
。将其提升到128M
,然后是256M
,然后是{{ 1}})直到你的程序再次开始工作。这样可以更轻松地调试您的问题。可能是你的程序有一个失控的循环并且提高内存限制也无济于事。
无论如何,你调试中最好的朋友是memory_get_usage。这将报告PHP正在使用多少内存。添加512M
调试或记录
var_dump
直到找到内存限制持续上升的循环,或者您发现内存限制大幅增加的单个操作。
一旦解决了问题,请不要忘记恢复内存限制。