Php 释放相关记录以释放Yii1中的内存
我有一段代码,可以迭代团队记录的所有相关概要文件记录(有很多) 看起来是这样的:Php 释放相关记录以释放Yii1中的内存,php,yii,memory-leaks,Php,Yii,Memory Leaks,我有一段代码,可以迭代团队记录的所有相关概要文件记录(有很多) 看起来是这样的: $team = Team::model()->findByPk(1); $score = 0; foreach ($team->profiles as $profile) { $score += $profile->getScore(); } 现在我需要保留$team变量,但由于循环,所有配置文件都将保存在profiles属性中,并占用大量内存 有没有办法安全地清理这个? 我曾想过将p
$team = Team::model()->findByPk(1);
$score = 0;
foreach ($team->profiles as $profile) {
$score += $profile->getScore();
}
现在我需要保留$team
变量,但由于循环,所有配置文件都将保存在profiles
属性中,并占用大量内存
有没有办法安全地清理这个?
我曾想过将
profiles
设置为null
,但它显然仍然是null(我不知道以后是否需要另一段代码访问profiles
)正如我所说,在我看来,您似乎想保留$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]);
}
for($i=0;for($i=0,$j=count($team->profiles);$i<$j;++$i){
$score+=$team->profiles[$i]->getScore();
未设置($team->profiles[$i]);
}
//或
foreach($team->profiles as$key=>$profile){
$score+=$profile->getScore();
未设置($team->profiles[$key]);
}
如果需要的话,再从数据库中获取它们。或者将它们存储在某种临时文件中。我认为没有其他方法。就像我说的,在我看来,你似乎想保留
$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]);
}
for($i=0;for($i=0,$j=count($team->profiles);$i<$j;++$i){
$score+=$team->profiles[$i]->getScore();
未设置($team->profiles[$i]);
}
//或
foreach($team->profiles as$key=>$profile){
$score+=$profile->getScore();
未设置($team->profiles[$key]);
}
如果需要,可以从数据库中再次获取它们。或者将它们存储在某种临时文件中。我认为没有其他方法。因此,您希望保留
$team
变量,但同时不保留,因为它会占用大量内存?如果是这种情况,我会逐个取消设置并从数据库中获取它们如果需要,请重新打开数据库。或者将它们存储在某种临时文件中。我认为没有其他方法。不,不。我需要保留$team
变量,但我可能不需要保留profiles
属性。至少,不是每个将要使用的$team
记录。因此,您希望保留$team
变量,同时你不需要,因为它占用了大量内存?如果是这样,我会一个一个地取消设置它们,如果你需要的话,再从数据库中获取它们。或者将它们存储在某种临时文件中。我认为没有其他方法。不,不。我需要保留$team
变量,但我可能不需要保留profiles
属性。至少,不是每个$team
记录都要使用。