Akdmeh
@Akdmeh
PHP, Yii2, Music

Как реализовать очередь с запланированным временем?

Добрый день!
Вместо решения в виде RabbitMQ реализовал более компактный вариант с методами Redis blpop и rpush.
Суть состоит в том, что сервер в фоне опрашивает некоторые страницы.
Если же они возвращают некорректный ответ - нужно попытаться повторить задачу через 10 минут.
Получается, уже в этом случае blpop/rpush не подойдет, так как там все идет мгновенно.
Какие я вижу решения:
1) Запускать раз в 10 минут скрипт через крон. Недостатки - нет гарантии, что все сработает с нужным диапазоном
2) создать еще одну очередь в Редисе, в которой кроме ссылки указывать время и раз в несколько минут делать проверку - не настало ли время повторно отправить запрос
3) реализовать это же на MySQL

Возможно, есть более элегантные способы реализации подобных задач?
  • Вопрос задан
  • 342 просмотра
Решения вопроса 1
Способы разные есть. Нормально - beanstalk или RabbitMQ. В обоих есть функционал отложенных задач.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы