我正在运行这样的代码
foreach ($set as $id)
{
$user = Model_Users::find($id);
$user = NULL;
}
每次循环都会增加内存消耗。太容易忽视 - 每次大约300Kb。迭代次数是几十万。
所以,有一个问题 - 我必须销毁或关闭以保持内存消耗水平?
答案 0 :(得分:2)
v1 ORM缓存每个创建的模型。在循环中执行查询也不是最好的方法,就好像你有“数十万”你将要执行成千上万的查询。
如果您有多行要一次处理,您有两个选项。第一种是使用DB类来执行查询。第二种方法是一次以较小的批次运行循环。
我还建议您使用IN
一次加载多个模型,将查询从循环中删除。
$users = Model_Users::find('all', array(
'where' => array(
array('id', 'IN', $set)
)
);