Так что я здесь как бы застрял в тупике и не уверен, по какому пути идти. На данный момент мое приложение получает POST
запросов от наших машин, которые при выходе из строя мы называем предупреждениями. Некоторые из проблем, которые публикуются на моем сервере, содержат c шагов, которым должны следовать ребята из IT
, чтобы решить проблему с машинами. Некоторые из этих шагов заключаются в ожидании определенного c времени, например 15, 30 или 60 минут. По истечении указанного времени предупреждение перемещается на следующий шаг и так далее, пока машина не вернется в рабочее состояние. На данный момент мы делаем setTimout()
для каждого предупреждения, которое приходит с временем ожидания, но проблема в том, что это происходит на стороне клиента, что вызывает много накладных расходов из-за дублирования некоторых из этих тайм-аутов.
Очевидно, что способ, которым он настраивается прямо сейчас, не является оптимальным и не самым подходящим решением, поэтому я подумал о том, чтобы выполнить эту проверку со стороны сервера. Моя первая мысль заключалась в том, чтобы просто установить тайм-ауты на стороне сервера, но некоторые проблемы с этим подходом заключаются в том, что если у сервера когда-либо было время простоя или сбой, эти тайм-ауты стирались. Другая моя мысль заключалась в том, чтобы каждую минуту просто выполнять задание cron с сервера, чтобы проверять, прошло ли время ожидания какого-либо из предупреждений, а затем обновлять предупреждения оттуда. Это сработает в тех случаях, когда сервер выходит из строя или выходит из строя и ему требуется перезагрузка, но я беспокоюсь, что это будет излишним для сервера.
Я действительно просто ищу здесь несколько хороших решений поскольку я чувствую, что застрял в выборе маршрута, который мне следует выбрать. Я склоняюсь к опции задания cron, но меня беспокоит, что это приведет к перегрузке сервера.
Я не думаю, что создание интервала для задания cron более 1 минуты сработает, потому что, если два или более предупреждений приходят в разное время, их нужно обновлять ровно через 15, 30 или 60 минут с того времени, как они были инициированы.
Если у кого-нибудь есть предложения о способах, sh которые я мог бы сделать это, это было бы очень полезно. Спасибо!