PHP. Очередь задач. Выполнение по расписанию. На чем реализовать?
Будет примерно такое:
Пользователи сервиса будут настраивать параметры расписания публикации сообщений:
1. Публиковать одну запись в заданное время
2. Публиковать записи каждые хх минут
Далее выбирает дни недели, время и период публикации.
После этого система по расписанию публикует что то.
Вопрос в том, как это все организовать, с помощью чего(celery, mongoDB, RabbitMQ )?
С таким никогда не сталкивался, и хочется не ошибиться с выбором.
Предполагается, что пользователей будет много(1000+), каждый может настраивать десятки расписаний.
Возможно будет необходимость использовать несколько серверов для распределения нагрузки.
Beanstalkd умеет отдавать отдавать задачи из очереди по расписанию, есть персистентность, очень простой интерфейс. А повторяющиеся задачи можно реализовать в клиентском коде.
Проблема в том что расписание будут редактировать часто.
А если делать так:
Вариант 1
Есть таблица с этим расписанием на MySQL
Cron каждую минуту или несколько секунд заглядывает в таблицу и создает задачи на ближайшее выполнение в очередь, у которых подошло время.
Вариант 2
Есть таблица с этим расписанием на MySQL
Cron каждую минуту или несколько секунд заглядывает в таблицу и создает и обновляет задачи на все активные расписания.
@Ruslan72 верного нету. Есть три варианта, ActiveMQ, Gearman, Beanstalkd. Пробегитесь по документации, посмотрите есть ли под PHP библиотеки-фронтэнды...
@Ruslan72 RabbitMq Это лишь брокер без всякой дополнительной функциональной ерунды. Он умеет принимать, распределять и отдавать сообщения. Там нет понятия времени. Как придет Консьюмер так и будет прочитано сообщение. А вот уже на чем строить систему слежения за очередью решать вам.