所有,
我循环在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()
,特别是如果您打算在之后使用该记录。你应该使用它的唯一情况是,如果你正在加载大量的记录,你需要释放内存。