全部,
我在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);
}
在第二次迭代中,我获得了新记录但没有内部关系???
任何想法......
感谢您的建议
答案 0 :(得分:0)
正如方法评论和API reference
中所述帮助释放实体占用的内存。将实体的所有引用剪切到其他实体,并从实例池中删除该实体。注意:调用free()后,实体不再可用。 之后对该实体进行的任何操作都可能导致不可预测的结果。
您不应该使用free()
,特别是如果您打算之后使用该记录。您需要使用它的唯一情况是,如果您正在加载大量记录并且需要释放内存。