Комментарии 5
Вечная проблема использующих крон вместо systemd-таймеров - отсутствие механизма, предотвращающего одновременные запуски. А счастье было так близко...
Тут как раз прикрыто: на воркере flock(LOCK_EX|LOCK_NB) — следующий тик тихо выходит, если предыдущий ещё жив; плюс singleInstance у планировщика. А двойную обработку ловит атомарный захват задачи (UPDATE … WHERE status=‘in_work’, affected_rows=0 → пропуск) — та самая «анти-дюп» строчка. Лок от параллельных запусков, claim — от двойной выдачи, если лок обошли.
Ох, сколько же нас, пишущих текстовые игры в виде бота в тг!
И кто во что горазд 🤣
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Весь «вечно живущий» мир моей MMORPG держится на одной строке в кроне