Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js cron作业是否可以每';x';秒_Node.js_Cron - Fatal编程技术网

Node.js cron作业是否可以每';x';秒

Node.js cron作业是否可以每';x';秒,node.js,cron,Node.js,Cron,我有一个cron作业设置,最小值为60秒,我希望程序能够以秒为间隔运行,即我将其设置为60秒以后的任何时间 例如,我希望cron作业每65秒运行一次,或者每63秒运行一次,或者每160秒运行一次,等等 这可能吗?或者cron作业仅设置为以60秒的间隔运行 如果是,这个cron作业会是什么样子 我设法让它每“x”分钟运行一次: 到目前为止,我已经成功地使用了一个数据库值,用户每设置几分钟插入一个数据库值来运行cron作业。看起来是这样的: cron.schedule('*/' + test +

我有一个cron作业设置,最小值为60秒,我希望程序能够以秒为间隔运行,即我将其设置为60秒以后的任何时间

例如,我希望cron作业每65秒运行一次,或者每63秒运行一次,或者每160秒运行一次,等等

这可能吗?或者cron作业仅设置为以60秒的间隔运行

如果是,这个cron作业会是什么样子

我设法让它每“x”分钟运行一次: 到目前为止,我已经成功地使用了一个数据库值,用户每设置几分钟插入一个数据库值来运行cron作业。看起来是这样的:

  cron.schedule('*/' + test + ' * * * *', function () {
    console.log('running a task every minute');
  });
模式如下所示:

var CronSchema = new mongoose.Schema({
  minutes: { type: Number, min: 1 }
})
如何每“x”秒运行一次cron作业?
理想情况下,我只允许用户以秒为单位输入一个值,因此如果他们希望作业每两分钟运行一次,就必须输入120秒。

如果您使用节点中间件,也可以添加秒

cron.schedule('*/' + test + '0,30 * * * * *', function () {
    console.log('running a task every minute');
});
将每30秒运行一次,即在
xx:00:000
xx:30:000

请注意,javascript版本有六个值,而不像本机Linux Cron那样有五个值,这意味着第六个值代表秒,这将是第一个值

*    *    *    *    *    *
┬    ┬    ┬    ┬    ┬    ┬
│    │    │    │    │    |
│    │    │    │    │    └ day of week (0 - 7) (0 or 7 is Sun)
│    │    │    │    └───── month (1 - 12)
│    │    │    └────────── day of month (1 - 31)
│    │    └─────────────── hour (0 - 23)
│    └──────────────────── minute (0 - 59)
└───────────────────────── second (0 - 59, OPTIONAL)
有关允许值的完整文档可在中找到


这将每x秒运行一次。

您是否真的在使用?为什么不使用
setInterval
?Linux
cron
守护进程仅每分钟检查一次。要在x秒计时器上运行任何东西,您需要使用其他机制。是的,我实际上使用的是cron。主要目的是允许用户设置cron作业运行的频率。我可以用setInterval吗?另外还需要什么机制呢?看起来您正在使用cron中间件进行Node,它通常只在引擎盖下使用javascript计时器。如果我想每38秒运行一次呢?这是不可能的,而且只可能是60的倍数。@coder,为什么你认为不可能每38秒运行一次?如果您使用
cron
npm包,您可以毫无问题地运行。例如,我每15秒运行一个脚本,并编写以下代码:
*/15*****
。也许,我什么都不知道。@AlexeyKorkoza,当我说60的倍数时,我的意思是可以除以60的数,例如,1,2,3,4,5,6,10,12,15,20,30。你可以用上面提到的倍数来做,但不能用38秒。请看cron info的链接*/38\uu**当他们为基于unix的系统开发cron时,他们根本不考虑秒数,主要是因为在服务器上运行程序的频率通常不必超过在分钟内定义的任何频率。大多数情况下,crontab每小时或每天工作一次,而不是每15秒。现在,情况有点不同了,有时候比每分钟更频繁地投票是有意义的。基于Javascript的程序,比如for Node,可能使用setInterval,并且可以设置为任何“秒”值,如果允许的话,甚至可以设置为毫秒。
cron.schedule('*/' + test + '0,x * * * * *', function () {
   console.log('running a task every x seconds');
});