Как сделать рассылку с ограничением количества писем на Laravel?
Пытаюсь сделать рассылку о новых объявлениях.
- 1000 адресов
- smtp ограничение 30 писем / минуту.
В ларавел есть очереди (queue) - их основная цель возможность повторного выполнения если что-то пошло не так. Сразу лучше не грузить все 1000 задач в очередь на отправку писем из-за ограничений.
1) Есть конечно всякие sleep, delay(now()->addMinutes(10)), Mail::later($when, new OrderShipped($order)) и другие способы - но они все во время простоя нагружают PHP?
2) Можно сразу загрузить все 1000 писем в очередь, но большая часть из них не отправится и придётся их потом переотправлять.
3) Поэтому наиболее оптимально будет написать код таким образом, чтобы добавлять в очередь 20-30 писем в минуту за счёт задачи по крону. Ну а затем очередь рассылается.
Скажите, я правильно разобрался или вот это дробление на мелкие пакеты для отправки не нужно и можно как-то регулировать количество выполняемых задач(отсылаемых писем) с помощью каких-то настроек?
JhaoDa, Я читал документацию и страниц штук 40 пересмотрел разных. Страницу с документацией раз 15 пересматривал, но такое бывает, что новая информация воспринимается сложновато...
Код написал простой отправкой почты с разбиением по частям, но понимаю, что надо изучать и прикручивать через очереди - вот и уточняю информацию.
1) Есть конечно всякие sleep, delay(now()->addMinutes(10)), Mail::later($when, new OrderShipped($order)) и другие способы - но они все во время простоя нагружают PHP?
Нет, не нагружают.
Вы разобрались неправильно. Рекомендую перечитать документацию очередей вдумчиво. Самый труЪ-путь — Rate Limiting.