提取对象的Doctrine会在大约4000个对象中创建内存耗尽

时间:2011-12-02 23:08:38

标签: memory doctrine

致命错误:允许的内存大小为134217728字节。

在某些情况下,我需要创建数十万个结果,但显然这会导致巨大的内存问题。有没有办法减少大型查询集的内存?

1 个答案:

答案 0 :(得分:1)

这取决于您将如何使用结果:

  • 如果您不需要将结果作为对象,但数组就足够了 可以改变保湿模式: ->setHydrationMode(Doctrine::HYDRATE_ARRAY)可用于检索 多维数组中的数据(可以找到其他水合模式 在doctrine documentation
  • 如果您需要对象(例如在foreach循环中),请记得在使用后释放它们: $myobject->free(); /* if using php 5.2 also unset($myobject) */ 另请参阅学说docs on performance improving
  • 同样禁用调试栏对大型学说集合有很大帮助:sfConfig::set('sf_debug', false);