Извлечение объектов из доктрины приводит к истощению памяти примерно у 4000 объектов - PullRequest
0 голосов
/ 03 декабря 2011

Неустранимая ошибка: допустимый объем памяти в 134217728 байт исчерпан.

В некоторых случаях мне нужно создать десятки тысяч результатов, но, очевидно, это вызывает огромные проблемы с памятью.Есть ли способы уменьшить объем памяти для больших наборов запросов?

1 Ответ

1 голос
/ 12 декабря 2011

Зависит от того, как вы будете использовать результаты:

  • , если вам не нужен результат как объект, но массива будет достаточно, вы можете изменить режим гидратации: ->setHydrationMode(Doctrine::HYDRATE_ARRAY) можно использовать для полученияданные в многомерном массиве (другой режим гидратации можно найти в документации доктрины )
  • , если вам нужны объекты в качестве результата (например, в цикле foreach), не забудьте освободить их после использования: $myobject->free(); /* if using php 5.2 also unset($myobject) */ посмотрите также доктрину документы по повышению производительности
  • также отключение панели отладки очень помогает в больших коллекциях доктрин: sfConfig::set('sf_debug', false);
...