@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 мин. Соответственно и остальные команды будут выполняться плюс минус в этом интервале времени.

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

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

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

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

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