Nodejs定点定时器问题(请高手来看下)
发布于 2年前 作者 duyinghua 3384 次浏览

如果想要在程序里面做一个定时更新数据库数据的定时器,能有什么实现思路吗,比如我想在每天17:00更新一遍数据库数据(比如是把某个字段加1),有什么实现思路吗,或者如果用setInterval每隔24小时执行会不会有什么问题啊?以前用这个函数没定时过这么久的定时,怕出问题呢。

14 回复

虽然有土办法,但还是期待有完备的思路

我用的方法 是linux 的cron 计划任务,执行某个特定脚本。修改数据库的值。

用 setInterval 有一个多小时的限制,可以用 setInterval 嵌套解决。

我也会用 cron 来处理,好控制。

我想用setInterval 每隔一个小时检测一下当前系统时间的小时值是否等于17,如果等于的话就执行,这样没问题吧?还有那个setInterval 有一个多小时的限制是怎么个情况?

The interval must be in the range of 1-2,147,483,647 inclusive. If the value is outside that range, it’s changed to 1 millisecond. Broadly speaking, a timer cannot span more than 24.8 days. 24小时理论上来讲是可以实现的。

setInterval不要设置这么长的时间间隔啊,比如设置10分钟检测一次,如果当前时间是17点左右的时间段,就开始执行任务

实际上完全可以先做一个精度为10分钟的cron模块

目前是这个思路 不过10min我用的是1h间隔,如果不是简单+1而是一些复杂的记库之类的,那就不好用cron了

@duyinghua 我目前在用的就是,时间间隔小一点,然后判断时间是自己想要执行的范围,就执行~~

正好最近也在用cron去定時跑我的nodeJS程式, 這篇我的Blog讓你參考 :)

我原本也是想在nodeJS判定時間, 但後來發現用crontab就可以很簡單做到我想要的事

[Linux] 使用 Crontab 定時執行程式

多谢,24.8天够了。我用的appfog云主机,貌似没法设置crontab,只能用setInterval.

有用appfog云主机的吗?它可否调用系统的crontab功能?

看到这个插件:https://github.com/ncb000gt/node-cron,貌似是是我要找的答案。

回到顶部