бд, обрабатывает их и выходит. Нужно запускать её раз в минуту. Запускать её можно только в одном экземпляре, так что используется lock - symfony/lock.
Время выполнения команды может быть разным, 1 секунда или 70 секунд, то есть если новый крон запускает команду он должен увидеть что лок занят и выйти сразу, но что если команды была закрыта неожиданно и лок не отпущен?
ttl не вариант так как нет гарантии что команда просто ещё не закочила работу.
Что можно сделать?
В голову разве что приходит не cron использовать а спать в цикле, и не проверять лок а кидать ошибку если лок уже занят, тогда мне придётся только руками удалять лок в случае если команды выйдет неожиданно, но это редкий сценарий так что не проблема.
TTL вполне себе вариант если ты будешь трогать ключ раз в TTL/2
Можешь просто напросто проверить запущен ли процесс, если да - вот тебе и лок
Обсуждают сегодня