You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
У нас в yii-demo есть консольная команда fixture/add для добавления фикстур.
Например fixture/add 20 сгенерирует в блог около 20 пользователей с 20 постами на каждого, а в постах от 0 до 20 комментов и сколько-то тегов.
При сохранении сгенерированного все сущности пользователей помещаются в одну транзакцию.
Соответственно, сайкл проходит по всем пользователям, получает все посты, все комменты и как-то это сохраняет.
Проблема 1
При включённом xdebug скрипт fixture/add 20 падает из-за слишком большой вложенности (большой стек вызовов).
Xdebug и выброшенный стек в 256 строк как бы намекают, что рекурсивный подход с ростом стека вызовов при обходе сущностей — не очень красиво.
Пока мы уменьшили набухание стека путём отказа от двустороннего связывания сущностей в коде команды (yiisoft/demo@6e1cdfc).
Проблема 2
Наблюдается обильное поедание памяти в процессе выполнения транзакции.
При выполнении fixture/add 100 с memory_limit = 128M приложение падает с ошибкой нехватки памяти.
Перед запуском транзакции поедаемая память со всеми сгенерированными сущностями не превышает 30МБ, так что остальные 90МБ за ORM. Дебаг отключён, логи в памяти приложением не собираются.
Отваливается скрипт 50/50 как до начала сохранения в БД так и во время.
The text was updated successfully, but these errors were encountered:
У нас в yii-demo есть консольная команда
fixture/add
для добавления фикстур.Например
fixture/add 20
сгенерирует в блог около 20 пользователей с 20 постами на каждого, а в постах от 0 до 20 комментов и сколько-то тегов.При сохранении сгенерированного все сущности пользователей помещаются в одну транзакцию.
Соответственно, сайкл проходит по всем пользователям, получает все посты, все комменты и как-то это сохраняет.
Проблема 1
При включённом xdebug скрипт
fixture/add 20
падает из-за слишком большой вложенности (большой стек вызовов).Xdebug и выброшенный стек в 256 строк как бы намекают, что рекурсивный подход с ростом стека вызовов при обходе сущностей — не очень красиво.
Пока мы уменьшили набухание стека путём отказа от двустороннего связывания сущностей в коде команды (yiisoft/demo@6e1cdfc).
Проблема 2
Наблюдается обильное поедание памяти в процессе выполнения транзакции.
При выполнении
fixture/add 100
сmemory_limit = 128M
приложение падает с ошибкой нехватки памяти.Перед запуском транзакции поедаемая память со всеми сгенерированными сущностями не превышает 30МБ, так что остальные 90МБ за ORM. Дебаг отключён, логи в памяти приложением не собираются.
Отваливается скрипт 50/50 как до начала сохранения в БД так и во время.
The text was updated successfully, but these errors were encountered: