Исключение нехватки памяти, возникающее в базовой Doctrine MongoDBPhp

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Исключение нехватки памяти, возникающее в базовой Doctrine MongoDB

Сообщение Anonymous »

В моей базе данных около 60 тысяч документов, и я не могу запросить их. Единственный способ успешно их получить — использовать опцию гидрат(false).

Я пробовал оба варианта:

Код: Выделить всё

$dm = $this->get('doctrine_mongodb')->getManager();
$qb = $dm->createQueryBuilder('BConwayWebsiteBundle:Business')
->eagerCursor(true);
$query = $qb->getQuery();
$results = $query->execute();
и

Код: Выделить всё

$dm = $this->get('doctrine_mongodb')->getManager();
$qb = $dm->createQueryBuilder('BConwayWebsiteBundle:Business');
$query = $qb->getQuery();
$results = $query->execute();
Если я дам дамп $results->isInitialized(), это будет ложь. Я считаю, что это потому, что я еще не использовал его на тот момент. Однако любой доступ, который я пытаюсь сделать, вызывает проблему с памятью. Даже что-то настолько простое, как $results->count().

Код: Выделить всё

[2013-10-01 23:54:55] doctrine.INFO: MongoDB query: {"find":true,"query":[],"fields":[],"db":"ClosedForTheHoliday","collection":"businesses"} [] []
[2013-10-01 23:54:55] doctrine.INFO: MongoDB query: {"limit":true,"limitNum":null,"query":[],"fields":[]} [] []
[2013-10-01 23:54:55] doctrine.INFO: MongoDB query: {"skip":true,"skipNum":null,"query":[],"fields":[]} [] []
[2013-10-01 23:54:55] doctrine.INFO: MongoDB query: {"sort":true,"sortFields":[],"query":[],"fields":[]} [] []
[2013-10-01 23:54:56] emergency.EMERGENCY: Allowed memory size of 134217728 bytes exhausted (tried to allocate 32 bytes) {"type":1,"file":"/media/sf_sites/cfth_com/vendor/doctrine/mongodb/lib/Doctrine/MongoDB/Cursor.php","line":237} []
ОБНОВЛЕНИЕ: Если я ограничу результаты до 2000, это сработает. Более того, если я выберу только два поля, которые собираюсь использовать после запроса, я могу ограничить его до 15 000 и добиться успеха. Когда я ограничиваю его до 2000, панель отладки разработчика сообщает, что запрос использовал 120 МБ памяти. Мне нужно иметь возможность перебирать все результаты, и их нельзя разбивать на страницы. Кажется, это возможно без запросов размером более 100 МБ...

Подробнее здесь: https://stackoverflow.com/questions/191 ... ne-mongodb
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»