Artisan-команда пересчёта бонусов падает с Allowed memory size exhausted
foreach (User::where('active', true)->get() as $user) {
$user->recalculateBonuses();
}
Активных пользователей 2 миллиона. Команда падает с ошибкой памяти ещё до первой итерации. Как переписать?
- Обрабатывать порциями через chunkById или lazyById
- Увеличить memory_limit до 8 ГБ
- Вызывать gc_collect_cycles() в цикле
- Заменить foreach на while
