Наиболее вероятной причиной сбоя является то, что вы звоните setInterval
несколько раз.В краткосрочной перспективе это нормально, но в итоге у вас работает много интервальных таймеров, и это в конечном итоге станет проблемой из-за памяти и нагрузки на процессор.
Я предпочитаю использовать пакет npm node-cron
, я настроил таймер в методе запуска следующим образом:
//
// These are cron-style time specifiers
//
// ┌───────────── minute (0 - 59)
// │ ┌───────────── hour (0 - 23)
// │ │ ┌───────────── day of month (1 - 31)
// │ │ │ ┌───────────── month (1 - 12)
// │ │ │ │ ┌───────────── day of week (0 - 6) (Sunday to Saturday)
// │ │ │ │ │ 7 is also Sunday on some systems)
// │ │ │ │ │
// │ │ │ │ │
// * * * * *
const TICKER_INTERVAL = '1,16,31,46 * * * *' // This runs 4 times an hour
// const TICKER_INTERVAL = '* * * * *' // This runs every minute (use when debugging)
Meteor.startup(() => {
cron.schedule(TICKER_INTERVAL, Meteor.bindEnvironment(signoutTicker))
})
Это применимо только на сервере, конечно (вы знали, чтоне так ли?)
Я считаю, что это работает очень надежно для меня.