释放相关记录以释放Yii1中的内存

时间:2016-12-23 11:21:35

标签: php yii memory-leaks

我有一段代码可以迭代团队记录的所有相关个人资料记录(HAS_MANY)。

看起来像这样:

$team = Team::model()->findByPk(1);
$score = 0;

foreach ($team->profiles as $profile) {
    $score += $profile->getScore();
}

现在我需要保留$team变量,但由于循环,所有配置文件都将保留在profiles属性中,并耗尽大量内存。

有没有办法安全地清理它? 我考虑过将profiles设置为null,但之后它显然仍然为空(我不知道其他代码是否需要稍后访问profiles

1 个答案:

答案 0 :(得分:0)

就像我说的那样,在我看来你想要保留$team变量,同时你不要,因为它使用了大量的内存......

在这种情况下,我会逐一取消它们:

for ($i=0;for ($i=0, $j = count($team->profiles); $i < $j ; ++$i ){
    $score += $team->profiles[$i]->getScore();
    unset($team->profiles[$i]);
}

// OR

foreach ($team->profiles as $key => $profile) {
    $score += $profile->getScore();
    unset($team->profiles[$key]);
}

如果您需要,可以再次从数据库中获取它们。或者将它们存储在某种临时文件中。不要以为我认为还有另一种方式。