CakePHP 2.2.3 - 调试“在0行上未知时耗尽的内存”错误

时间:2012-12-31 21:35:13

标签: php cakephp

我有一个CakePHP 2.2.3应用程序在我们的Dev服务器上运行得非常好,这是来自Turnkey Linux的Debian Squeeze LAMP盒子。我们正在为我们的生产服务器使用InMotion托管,并且将代码移到此服务器上是非常糟糕的。

在一个页面上测试AJAX功能时,我们得到了非常无益的帮助:

致命错误:第0行的“未知”中允许的内存大小为268435456字节(尝试分配389245600字节)

tl;博士:我正在寻找有关如何调试此问题的建议

我的第一个行动是将控制器功能中的所有代码删除到最低限度。我的一个控制器的index()动作包含一行代码,并且仍然以某种方式设法每次执行超过256mb的内存:

$this->autoRender = false;

为了将上述观点发挥到极致,我评论了模型的每一行和&生成此错误的控制器。仍在耗尽内存。发出MySQL数据库请求的其他几个页面也会显示这个“内存耗尽”错误,尽管它们完全加载。其他页面,内存错误更像是一个显示停止并完全阻止执行。

我尝试将内存限制从256提高到512甚至1024mb,所有这一切都会抑制错误消息本身。该页面不会路由/渲染或执行任何操作,它只是默默地失败。

At the suggestion of another SO post, I tried turning Debug from 2 down to 0, which does not help the issue at all either.

我们的生产服务器上没有安装XDebug,所以我不知道应该如何追踪我们的网站主机来解决问题。

我们使用的VPS是运行Apache 2.2.23,MySQL 5.3.18和CakePHP 2.2.3的CentOS 5.8服务器

我们的网站管理员不能或不会提供有关此主题的任何进一步信息。他们建议我们“问问蛋糕开发者他们之前是否见过这样的东西”,我觉得这是一种非常懦弱的方式来踢罐头。我希望SO上的某位人员之前已经看过类似这样的问题,并且可能会提供帮助。

2 个答案:

答案 0 :(得分:0)

我以前见过这个问题,可能是因为你没有使用可包含的行为。 在我学习在AppModel(或您正在使用的任何模型)上设置$recursive = -1之前,我发生过很多次。 除非您有意识地每页管理大量信息,否则您应该限制数据的重新审核。使用Containable Behaviour$recursive

的组合将模型检索维持在最低限度非常重要

答案 1 :(得分:0)

只是提示:它可能是会话问题。如果你在$ _SESSION中存储太多,session_start()可以做这样的事情,因为它必须读取你存储的所有狗屎。试试这个:

$ _ SESSION = array();

如果这有帮助,你会发现其余部分。