当我在FuelPHP的循环中创建模型时,内存泄漏

时间:2014-06-04 07:29:12

标签: php memory-leaks fuelphp

我正在运行这样的代码

foreach ($set as $id)
{
    $user = Model_Users::find($id);
    $user = NULL;
}

每次循环都会增加内存消耗。太容易忽视 - 每次大约300Kb。迭代次数是几十万。

所以,有一个问题 - 我必须销毁或关闭以保持内存消耗水平?

1 个答案:

答案 0 :(得分:2)

v1 ORM缓存每个创建的模型。在循环中执行查询也不是最好的方法,就好像你有“数十万”你将要执行成千上万的查询。

如果您有多行要一次处理,您有两个选项。第一种是使用DB类来执行查询。第二种方法是一次以较小的批次运行循环。

我还建议您使用IN一次加载多个模型,将查询从循环中删除。

$users = Model_Users::find('all', array(
    'where' => array(
        array('id', 'IN', $set)
    )
);