CakePHP错误允许内存大小耗尽
在我的一个PHP应用程序上,我得到了允许的内存大小耗尽错误 我犯了什么错误才犯了那个错误 它显示在页面上,我在索引(列表)页面上使用更不常用的cakephp方法,如“查找”,从数据库表中选择记录 我怎样才能解决这个问题?问题是我不能在商业服务器上设置内存大小CakePHP错误允许内存大小耗尽,php,cakephp,cakephp-1.3,memory-management,Php,Cakephp,Cakephp 1.3,Memory Management,在我的一个PHP应用程序上,我得到了允许的内存大小耗尽错误 我犯了什么错误才犯了那个错误 它显示在页面上,我在索引(列表)页面上使用更不常用的cakephp方法,如“查找”,从数据库表中选择记录 我怎样才能解决这个问题?问题是我不能在商业服务器上设置内存大小 提前谢谢你 也许您可以使用类似的工具检查内存使用情况。接下来,您应该尝试优化该部分(只有该部分=>没有过早优化)。也许您可以使用类似的工具检查内存使用情况。接下来,您应该尝试优化该部分(并且只有该部分=>没有过早优化)。您可以在.htacc
提前谢谢你 也许您可以使用类似的工具检查内存使用情况。接下来,您应该尝试优化该部分(只有该部分=>没有过早优化)。也许您可以使用类似的工具检查内存使用情况。接下来,您应该尝试优化该部分(并且只有该部分=>没有过早优化)。您可以在
.htaccess
文件中使用类似以下内容:
php_value memory_limit 16M
这将帮助您设置内存限制,而无需修改PHP INI文件。:)确保这是
.htaccess
文件中的第一行,通常情况下..您可以在.htaccess
文件中使用以下内容:
php_value memory_limit 16M
这将帮助您设置内存限制,而无需修改PHP INI文件。:)确保这是
.htaccess
文件中的第一行,通常情况下..正如斯多克所建议的那样,您可以增加.htaccess文件中的内存限制,但您应该真正尝试并弄清楚发生这种情况的确切原因,因为即使默认的内存限制对于大多数中小型应用程序和数据库都应该足够了,而且您增加的内存限制越高,您就越快需要升级托管计划
使用Alfred建议的内存检查工具将是一种选择,但如果你的应用程序相当基本,并且它失败的操作没有那么复杂,那么你可以手动在代码中查找故障迹象。首先,在查找
的任何位置,您是否将递归设置为2?如果是,请尝试暂时将其更改为-1
。如果没有,您可以添加$this->Model->recursive=-1代码>在之前查找
,以确保已设置
当然,如果您这样做,您的查询可能会失败,但至少您知道是什么消耗了所有内存。然后,您可以使用更高效的自定义查询来代替Cake automagic查询,后者通常可以节省大量开销,尤其是在基于多级模型关联的复杂查询上。正如Stoic所建议的,您可以在.htaccess文件中增加内存限制,但您应该真正尝试并弄清楚发生这种情况的确切原因,因为即使默认内存限制对于大多数中小型应用程序和数据库都应该足够了,而且您的内存限制越高,您就越快需要升级托管计划
使用Alfred建议的内存检查工具将是一种选择,但如果你的应用程序相当基本,并且它失败的操作没有那么复杂,那么你可以手动在代码中查找故障迹象。首先,在查找
的任何位置,您是否将递归设置为2?如果是,请尝试暂时将其更改为-1
。如果没有,您可以添加$this->Model->recursive=-1代码>在之前查找
,以确保已设置
当然,如果您这样做,您的查询可能会失败,但至少您知道是什么消耗了所有内存。然后,您可以使用更高效的自定义查询来代替Cake automagic查询,后者通常会节省大量开销,尤其是在基于多级模型关联的复杂查询上。研究模型的“可包含”行为。这是一个核心行为,听起来你需要将其添加到你的发现中,以限制他们收回的数据量。此外,开始考虑用自定义查询替换查找,以加快速度并进一步限制返回的数据量。研究模型的“可包含”行为。这是一个核心行为,听起来你需要将其添加到你的发现中,以限制他们收回的数据量。另外,开始考虑用自定义查询替换查找,以加快速度并进一步限制返回的数据量。还有其他问题可能导致此错误
例如,一个无休止的循环,就像我无意中实现的一样
我想让应用程序为每个json调用呈现一个ajax视图,最后在App controller中实现了以下功能:
function beforeRender() {
parent::beforeRender();
if ($this->params['ext'] == 'json') {
$this->render('Elements/json');
}
}
它似乎反复回到beforeRender方法
这可能会帮助遇到相同问题的人。还有其他问题可能导致此错误
例如,一个无休止的循环,就像我无意中实现的一样
我想让应用程序为每个json调用呈现一个ajax视图,最后在App controller中实现了以下功能:
function beforeRender() {
parent::beforeRender();
if ($this->params['ext'] == 'json') {
$this->render('Elements/json');
}
}
它似乎反复回到beforeRender方法
可能这对遇到同样问题的人有帮助。当您遇到这样的错误时,它还会提到在哪一行没有分配更多内存,最好检查该位置的代码,看看发生了什么。当您遇到这样的错误时,它还会提到在哪一行没有分配更多内存,检查该位置的代码并查看发生了什么是一个好主意。tnx,但我想跳过这样的解决方案;因为我可能面临由hosting provider.tnx定义的内存限制,但我想跳过这样的解决方案;因为我可能会面临主机提供商定义的内存限制。