在另一个模型中加载模型时,我遇到了以下PHP错误:
Fatal error: Out of memory (allocated 74448896) (tried to allocate 65484 bytes)
in /homepages/8/d315990455/htdocs/smileyou/Smileyou2.0/system/core/Loader.php on line 9我的PHP120m(我想这对我正在开发的应用程序来说已经足够了)。为了调整应用程序的大小,我依赖于11个模型和平均每个模型中的4-5个函数。150-200行代码。
我曾经读过,在CodeIgniter中加载模型(我总是在类构造器中这样做)并不是一个好的实践,但是到目前为止,每件事情都很好.编辑:如果我尝试将它们加载到所需的函数中,而不是在类构造函数中,它也不能工作。
有谁遇到过同样的问题吗?任何帮助都将不胜感激。提前谢谢。
发布于 2014-02-06 10:58:09
好吧,经过努力调试代码,我已经让它正常工作了.我把它记录下来,只为社会所用:
似乎(我猜) CodeIgniter在模型中的模型加载嵌套级别上有一个限制.
正如我所说的,在我的例子中,我有11个模型(每个对应于一个数据库表)。我必须编写的算法需要大量的“嵌套”,因为例如,我的许多模型函数可能需要其他模型的4/5函数,而这反过来又需要其他的.诸若此类。
因此,在这种情况下,我通过(艰难地)挖掘算法来修复它,而不加载一些模型(那些产生内存泄漏的模型),即使某些函数需要它们,因为(我猜)它们已经加载在“调用”(前面)模型中。
对我起作用了。PS。不过,对于在CodeIgniter中实现这样一个复杂的算法,我接受任何更优雅的方法。所以你可以随意贴出来。
谢谢。
发布于 2014-02-04 11:23:02
我不熟悉CI活动记录实现,尽管它是一个过时的php 4框架。在运行密集数据库查询并为这些结果生成活动记录模型的情况下,尝试使用原始数据库查询:
就像我说的,我不熟悉CI,尽管快速查看一下文档。你应该能做这样的事:
return $this->db
->select($array)
->from('user')
->join('other','other.user_id = user.id','left')
->where($where)
->get()
->result(); 发布于 2016-08-11 10:57:33
我也面临着同样的问题。使memory_limit由8M增加到256 m。检查您的memory_limit并根据要求进行调整。
https://stackoverflow.com/questions/21550970
复制相似问题