@twohundrediq

С каким интервалом времени установить команды на cron?

Существует 8 консольных команд, которые отправляют пуш-уведомления. Вот первые 4:
1. push/send-push-list-ios-odd - отправляет уведомления на Ios (нечетные записи)
2. push/send-push-list-ios-even - отправляет уведомления на Ios (четные записи)
3. push/send-push-list-android-odd - отправляет уведомления на android (нечетные записи)
4. push/send-push-list-android-even - отправляет уведомления на android (четные записи)

Остальные 4 аналогичные, только у них немного другая выборка данных, что не играет роли, делают они то же самое.

Тесты:
Тестировал на локалке (openServer) и была такая ситуация: 783к пуш-уведомлений, из них половина на ios (391к), половина на android (391к).

Запустил push/send-push-list-ios-odd, которая отправила 191к тестовых пушей за 39 мин. Соответственно и остальные команды будут выполняться плюс минус в этом интервале времени.

Вопрос: с каким интервалом времени установить эти команды на крон, чтобы они не мешали друг другу, при этом выполнялись несколько раз в день (чем чаще, тем лучше). Также стоит уточнить, что каждая команда запускает процедуру, а по окончании работы, завершает ее. И если процедура будет активна, но запустится другая команда, то она просто скипнет свою очередь и не выполнится.
  • Вопрос задан
  • 190 просмотров
Пригласить эксперта
Ответы на вопрос 4
Можно использовать flock (lock-файл) для синхронизации процессов и не позволять определенным работать параллельно
https://simpleit.rocks/linux/shell/prevent-running...

P.S. Как рекомендовали в комментариях, правильнее работать с очередями задач, а не через крон. Если в проекте нет RabbitMQ / NATS и т.п., наиболее легковесным вариантом будет Redis
Ответ написан
Комментировать
CityCat4
@CityCat4
Внимание! Изменился адрес почты!
И если процедура будет активна, но запустится другая команда, то она просто скипнет свою очередь и не выполнится.

Тогда через крон пускать нельзя, нужен менеджер очереди.
Ответ написан
Комментировать
ky0
@ky0
Миллиардер, филантроп, патологический лгун
Делайте не через крон, а через systemd-таймеры - там есть масса настроек, относящихся к совместным запускам сервисов, зависимостям, непересекаемости и т. д.
Ответ написан
Комментировать
@pantsarny
Вам надо избежать состояние гонки
Это или flock или systemd или очереди или своя реализация
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы