循环中doctrine_record::free()方法的奇怪行为



所有,

我循环在Doctrine_Query::execute()与许多关系,我得到一个记录每次迭代。没有问题。

为了节省内存,我想使用free()来记录内存使用情况Doctrine_Record:自由()。

第一次迭代,没有问题,但在下一次我的新对象松散的关系。示例:

$q = Doctrine_Query::create() 
  ->From(..) 
  ->leftJoin(...) 
  ->innerJoin(Relationship) 
  ->where(...) 
  ->andWhere(...); 
foreach($q->execute() as $r) 
{ 
   $val = $r->Relationship->get(colx); 
   $r->free(true); 
} 

在第二次迭代,我得到新的记录,但没有innerJoin关系??

任何想法…

谢谢你的建议

正如方法注释和API参考

中所述

帮助释放实体占用的内存。删除实体对其他实体的所有引用,并从实例池中删除实体。注意:在free()被调用后,实体将不再可用。之后对实体进行的任何操作都可能导致不可预测的结果。

您不应该使用free(),特别是如果您打算在之后使用该记录。你应该使用它的唯一情况是,如果你正在加载大量的记录,你需要释放内存。

相关内容

最新更新