Допустимо ли использовать setTimeout и setInterval на сервере Node.js?
Здравствуйте. Поделитесь пожалуйста мнением по ситуации.
Я хочу установить запланированное действие. Допустим, чтобы раз в 5 часов, пользователи менялись неким образом в БД. Если пользователь активный в данный момент (есть связь с сервером) он будет об этом сразу оповещен, если нет, то при следующем подключении.
Суть в том, что для достижения этого я хочу использовать на своём бэкенде setInterval(func,18000000), где func - в целом функция, которая будет производить необходимые изменения. Она будет запускаться каждые 5 часов. Также предусматривается возможность отменить схедулинг пользователем, для чего я планирую использовать clearInterval
Вопрос в том, является ли такой подход с установкой интервала приемлемым в разработке и кодинге бэка? Если нет, то какие можно использовать альтернативы? Слышал про такое как cron, но он разве не на тех же таймаутах работает?
Сергей delphinpro, Спасибо. Тут вопрос в том, сможет ли пользователь с пользовательского приложения отменить запланированную функцию в cron. Или это нужно делать только при девелелопменте?
Persotr27, Можно собственный планировщик организовать в приложении. Крон будет например дергать его каждую минуту, а вы уже сами будете решать, нужно ли в эту минуту выполнять задание.
Если вопрос будут ли setTimeout и setInterval блокировать другие операции и как то сказываться на производительности, то лучше всего не этот вопрос ответит чтение статьи про EventLoop.
На мой взгляд использовать таймеры это нормальная практика, особенно если в данном случае речь идёт об одном таймере...