Задать вопрос
@Tw1ce

Как выполнить действие через промежуток времени, который может измениться?

Есть общий цикл, обрабатывающий все запросы пользователей, и есть понятие сессии, по истечению которой, должно выполниться действие, предположим (очень близко по смыслу) пользователю должно отправиться уведомление. Сессия закрывается по истечению определенного времени после последнего запроса от пользователя, то есть это отложенное выполнение, но время должно обновляться, так как отсчет должен идти от последнего запроса. У меня есть несколько вариантов, например, функция отложенного выполнения просто завершается, если по времени последнего запроса пользователя понимает, что оно обновилось и где-то еще есть другая функция, которая сделает что требуется, но несколько позже, но, как мне кажется, это далеко не самое изящное решение и существуют более оптимальные способы добиться нужного поведения. Собственно, предложения?
  • Вопрос задан
  • 750 просмотров
Подписаться 1 Оценить Комментировать
Ответ пользователя Евгений Иваха К ответам на вопрос (3)
@ivahaev
Программист, связист и просто хороший человек
В дополнение к решению Алексея, предложу ещё вариант, который применяю лично я для удаления протухших сессий:
Т.к. высокая точность не требуется, то раз в минуту я просто перебираю все сессии, смотрю на время последнего обращения, и если прошло больше установленного времени, то сессию прибиваю. Соответственно, при каждом обращении за сессией, поле LastRequest устанавливается на текущее время.
Ответ написан