📊 Queue vs Cron
Оба инструмента про «выполнить что-то не прямо сейчас». Но они решают разные задачи, и смешивать их не стоит.
Cron — планировщик. Он про время. «Запусти это в 03:00». «Запусти каждые 5 минут». Ему всё равно, что именно запускать — он просто триггерит процесс по расписанию.
Queue — очередь. Она про события и нагрузку. «Отправь письмо, когда пользователь зарегистрировался». «Обработай 10 000 строк CSV асинхронно». Очередь не знает про время, она знает про задачи.
🔹 Где Cron уместен
— Агрегация данных за период (ночные отчёты)
— Очистка устаревших записей
— Синхронизация с внешним источником по расписанию
— Задачи, которые должны выполняться независимо от пользовательской активности
🔹 Где Queue уместен
— Всё, что пользователь спровоцировал, но ждать не должен
— Задачи с потенциальными ретраями (внешний API может упасть)
— Параллельная обработка (несколько воркеров)
— Отправка уведомлений, генерация файлов, вебхуки
Если ты пишешь cron-задачу, которая ищет записи со статусом "pending" — ты уже строишь очередь. Используй нормальную: Redis + Laravel Horizon, RabbitMQ, SQS, Beanstalkd.
Комбинация: cron запускает job, который кладёт задачи в очередь. Это нормально — диспетчер по расписанию и обработчики асинхронно.
🐸 Библиотека пхпшника
#элементарный_выбор
Post #6418
2.2K
- 👍 9
- 🥱 6
- ❤ 2