我目前正在通过重构我的一些代码来对抗此错误消息:
致命错误:允许的内存大小为33554432字节耗尽
我想我必须在某个地方有一些草率的代码。在这样的循环中加载新模型是不好的做法:
<?php
foreach($blog_ids as $blog_id) {
$blog = new Blog($blog_id);
echo $blog->title;
}
?>
这是一种燃烧记忆的快捷方式......如果是,我该如何实现同样的目标呢?
编辑:
上面的代码只是一个片段。我每篇博客都有大量的信息 - 模型最有可能是处理它的最佳方式。
我可能在一个页面上最多有100个不同的博客列表。
答案 0 :(得分:2)
每次都会重复使用您的$ blog变量,因此PHP的垃圾收集器应该为您释放以前的Blog实例的内存。检查循环内部的memory_get_usage()以查看它是否没有。
答案 1 :(得分:1)
我的模型也遇到了这个问题,我需要在其中实例化大量信息,以便每条记录获得一个或两个信息。
我的解决方案是创建一个Collection
类,其中包括:
class BlogCollection
{
public function getTitles()
{
// select and returns just the titles of blogs
}
}
通过这种方式,您可以集中获取所需信息,而无需加载完整模型以获取一个或两个信息。
答案 2 :(得分:0)
我不知道Blog的构造函数中发生了什么,但我想你正在用数据库中的信息填充你的对象。
除了获取超出您需要的信息(如果您只需要标题......),如果您最多可以显示100个需要显示的条目,那么您可能还会进行大量的数据库访问。 / p>
我要做的是创建一个静态函数,一次性获取整个标题集合(以及您需要的任何其他内容)并将其存储在数组中以便以后显示。