Вступить в клуб →
лёгкаявопросLaravel: Eloquent, очереди и события

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

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела