我有 100 000+ 行的表,我想在学说中选择所有这些,并对每一行做一些操作,在 symfony2 中我尝试使用这个查询:
$query = $this->getDefaultEntityManager()
->getRepository('AppBundle:Contractor')
->createQueryBuilder('c')
->getQuery()->iterate();
foreach ($query as $contractor) {
// doing something
}
但后来我得到了内存泄漏,因为我认为它把所有数据都写在了内存中。
当我这样做时,我在那个库中拥有更多的 ADOdb 经验:
$result = $ADOdbObject->Execute('SELECT * FROM contractors');
while ($arrRow = $result->fetchRow()) {
// do some action
}
我没有任何内存泄漏。
那么如何从表中选择所有数据并且不会在 symfony2 中出现内存泄漏?
问题编辑
当我尝试删除 foreach 并进行迭代时,我也会遇到内存泄漏:
$query = $this->getDefaultEntityManager()
->getRepository('AppBundle:Contractor')
->createQueryBuilder('c')
->getQuery()->iterate();