2010-09-22 4 views
0

Я пытаюсь уменьшить использование памяти на скрипте большого цикла, поэтому я сделал этот небольшой тест. Использование Доктрины я запускаю этот код:Где моя утечка памяти в этом коде Doctrine 1.2?

$new_user_entry = getById($new_user_entries[0]['id']); 
unset($new_user_entry); 

$new_user_entry = getById($new_user_entries[1]['id']); 
unset($new_user_entry); 

function getById($holding_id) 
{ 
    return Doctrine_Core::getTable('UserHoldingTable')->findOneById($holding_id); 
} 

Но это уходит около еще 50 КБ в памяти каждый раз, когда я делаю GetByID и снят с охраной, и я не знаю, почему и как изменить его. У меня есть цикл, который проходит через тысячи из них плюс пара других функций, и это создает проблему.

+0

У вас есть кэширование включено в Доктрине? http://www.doctrine-project.org/documentation/manual/1_2/en/caching:query-cache-&-result-cache – Archimedix

+0

Если он активен по умолчанию, да. Но я не включил его сам. – gokujou

+0

Что ж, если бы кеширование было включено, это объясняло бы вашу утечку памяти. У доктрины все еще были бы кешированные объекты, потому что вы только освободили бы их ссылки на них, но не ссылки на Доктрину. – Archimedix

ответ

0

Мне не удалось найти лучшего решения, поэтому я отказался от Doctrine для этой функции и выполнил ручной запрос с mysqli. Эта сторона сделала шаг, и все работало, хотя и не идеально.

Смежные вопросы