FuelPHP ORM. Течет память при создании модели.

Фанат

oncle terrible
Команда форума
Фуйло - родственник коханы, так что попробую спросить здесь.
Правда, насколько родственны их ормы - не в курсе.

Делаю примерно так:
PHP:
foreach ($set as $id)
{
    $user = Model_Users::find($id);
    $user = NULL;
}
Сет очень большой, гиг памяти выедается очень быстро.
Model_Users - ванильная моделька, с релейшенами, обсерверами и прочим. То есть там запросов под сотню делается к базе при создании. И да - терять всё нажитое непосильным трудом, переписывая руками - не хочется.

Никто не знает случайно, куда там дунуть, чтобы вычищались все ошметки, оставшиеся при заполнении модели? gc_ не помогает
 

флоппик

promotor fidei
Команда форума
Партнер клуба
Там еще неск. мест где разное в статику кешируется. И не, не кохановское совсем.
 

Adelf

Administrator
Команда форума
И похоже кеш этот надо вручную чистить.
 

Фанат

oncle terrible
Команда форума
и опять ты попал в самую точку.
Стал обнулять нахрен эту $_cached_objects и перестала память течь в тестовом режиме. Ща в боевом попробую
 

Фанат

oncle terrible
Команда форума
А почему сразу все модели одним запросом не получить? Или это просто пример на утечку?
Не, это не пример.

Я не очень понял вопрос. Если все данные разом получить, то память и без утечек кончится очень быстро. Если получить данные без модели, голым SQL, то это вариант, но обидно
 

Absinthe

жожо
А все данные будут отображаться? Если обрабатываться простыми алгоритмами, то можно использовать групповые операции ORM, и объекты просто не будут загружены.
Если отображиться, то можно увеличить лимиты памяти, но повысить производительность.
 

Фанат

oncle terrible
Команда форума
Да не, какое отображение. Это экспорт.
Мне как раз все наоборот - производительность вообще не важна, а памяти - ну, чтобы гига хватило. А его не хватает вот как раз
Не хватало то есть, с этим идиотским кэширвоанием. Ненавижу ОРМы
 

Adelf

Administrator
Команда форума
Вообще, там в конструкторе кеш можно отключить. Так что предусмотрен там этот кейс.
 

Фанат

oncle terrible
Команда форума
Это из разряда: поездил в 2014 году на жигулях советского производства, и решил, что ненавижу автомобили.
Ой, не надо вот это вот всё.
Орм - говно для криворуких пользователей, нужное чтобы их код не выглядел совсем уж адом.
Да, оно упрощает выплнение примитивных операций. Ценой низведения реляционной БД до уровня key-value хранилища.

Мне уже пришлось переписать один кусок на голый SQL. Потому что получение данных через развесистую модельку в орме вылетало по таймауту через 30 секунд.
Запрос отрабатывает положенные 0.3.
Здесь меня тупо ломало делать то же самое - я только перед этим закончил раскрашивать модельку фломастерами.

Давайте не будем в стотыщпятисотый раз обсуждать достоинства и недостатки ормов. они общеизвестны.
 

keltanas

marty cats
Давайте не будем в стотыщпятисотый раз обсуждать достоинства и недостатки ормов. они общеизвестны.
Откуда желание чесать весь класс задач под гребенку одной не удачной реализации?
Так можно поработав с Битриксом писать, что все CMS - гавно, поработав с Yii писать, что все фреймворки - гавно и т.д. Стоит ли по одной не удачной реализации составлять впечатление обо всех ORM?
 

флоппик

promotor fidei
Команда форума
Партнер клуба
Да, оно упрощает выплнение примитивных операций. Ценой низведения реляционной БД до уровня key-value хранилища.
оно, что важно, еще и удешевляет сильно проектирование и разработку. Потому что узкие места ОРМ переписать на нормальный запрос сравнительно легко, а вот разгрести вручную распихуемые данные из пачки скуэля, да еще и не всегда качественного - это вот полный ад.
 

Фанат

oncle terrible
Команда форума
Откуда желание чесать весь класс задач под гребенку одной не удачной реализации?
А в чем неудачность конкретно фуйла? кто-то по другому работает?

Стоит ли по одной не удачной реализации составлять впечатление обо всех ORM?
Ну расскажи мне про новенький епонский ОРМ который за меня запросы строит по релейшенам.
А я подсуну ему рельсу в виде запроса, который без straight_join вообще не работает, а с ним все равно требует бубна )
 

Фанат

oncle terrible
Команда форума
оно, что важно, еще и удешевляет сильно проектирование и разработку. Потому что узкие места ОРМ переписать на нормальный запрос сравнительно легко, а вот разгрести вручную распихуемые данные из пачки скуэля, да еще и не всегда качественного - это вот полный ад.
Ну, хз. Тупой разраб, который правил работы с этим конкретным ормом не знает, точно так же дров наломает. Я тут месяц назад резво наладился весь функционал орма писать сам, поскольку не знал, что оно уже есть )
 

С.

Продвинутый новичок
keltanas, вы говорите о разном. Ты об ОРМ, как принципе, а Фанат -- об ОРМ как програмной реализации общего назначения. Таковые действительно годятся только для простеньких задач, а в сложных лагаю не по-детски. Но если делать ОРМ для какой-то частной модели или определенного класса задач, то подобных недостатков нет.
 

keltanas

marty cats
А я подсуну ему рельсу в виде запроса, который без straight_join вообще не работает, а с ним все равно требует бубна )
Погоди, ты хочешь подсунуть кривой запрос и заставить ORM разгребать его результаты, заведомо зная, что они не верные. Но, обвинить в неверности результатов саму ORM?
 

Фанат

oncle terrible
Команда форума
Погоди, ты хочешь подсунуть кривой запрос и заставить ORM разгребать его результаты, заведомо зная, что они не верные. Но, обвинить в неверности результатов саму ORM?
Смотри.
Дело не в кривизне запроса. А в сложности.

Я предположил, что "правильный" орм, о котором ты говоришь, будет сам строить за меня запросы с джойнами. поскольку моя главная претензия к ормам - то что они используют для работы с БД практически одни первичные ключи.
при этом я высказал обоснованне сомнения в адекватности такой автоматической генерации запросов. Особенно для сложных лучаев, требующих вмешательства в построение плана запроса
 

Фанат

oncle terrible
Команда форума
Там еще неск. мест где разное в статику кешируется. И не, не кохановское совсем.
Я для надежности эту переменную целиком чищу. Работает 100%
200к записей прошерстило стоя на одной и той же отметке.
 
Сверху