在Doctrine中持续存在许多记录导致内存耗尽

时间:2012-12-14 16:31:46

标签: doctrine-orm

当在命令行上运行Symfony命令时,我正在使用带有Doctrine的Symfony2 Framework,例如......

/path/to/php app/console myCommand

这个命令是为了更新大量的记录(大约35,000+),并且我在1Gb时内存耗尽,是否有更好的,可能更有效的方法来运行这些命令,所以我不会遇到这个问题?

我可以增加内存限制,但最终会在某些时候再次失败。

提前致谢

2 个答案:

答案 0 :(得分:0)

尝试使用批处理以块的形式处理更新。

http://docs.doctrine-project.org/en/2.1/reference/batch-processing.html

答案 1 :(得分:0)

在实体管理器上调用清除

$em = $this->getContainer()->get('doctrine')->getEntityManager();
$em->flush();
$em->clear();

由于您只是更新数据,而不是要求它保留在内存中。