简单的问题,我想在Node.js
中设置24或12小时超时,定期(每天一次或两次)检查一些数据库数据并清除可疑垃圾(如果有的话)。
是否存在由设置巨大超时引起的任何可能的问题或性能问题,我需要注意?我不介意,如果它在12到24小时内不准确,并且不介意在服务器崩溃时丢失此超时,因为我将在服务器启动时运行相同的垃圾收集器。
结论:
答案 0 :(得分:8)
我使用套餐cron
取得了成功。它使用简单,通常与CronTab兼容。我有一份每月运行一次的工作,自去年以来一直有效,所以我可以证明这一点。
话虽这么说,这个软件包最终只是在内部使用setTimeout
所以你这样做并没有真正的问题。如果您的超时数量太大(大于最大JavaScript整数),则可能存在问题,但1000 * 60 * 60 * 24
明显小于此值。
显然,如果您的系统出现故障或脚本因其他原因而崩溃,则超时无法正常工作。
如果可用(或Windows任务安排),您也可以直接使用crontab
。
答案 1 :(得分:4)
就个人而言,我会使用SELECT: no such column 'column2'
工作来完成这类工作(在Unix / Linux中)或者#34;计划任务"在Windows中。在任何情况下,工作都将完全在服务器上,由服务器完成......因此,我们没有理由拥有一个JavaScript应用程序(在#34;其他一些"计算机上)参与其中。
更一般地说:"不,不要告诉别人去睡12个小时,'不知怎的,相信这意味着他/她会及时醒来。" 而是使用闹钟。计算活动应该[下一次]发生的绝对时间,然后确保活动 发生"不是更早。"安排实际需要做工作的计算机,使用该计算机上可用的任何计划设施在适当的时间完成工作。
答案 2 :(得分:1)
应该没有任何问题,但在我看来,用OS cron工作做这件事情会更好。这将使用OS计时器,将调用您的节点应用程序;这对所有人来说都是清楚的,即使对于那些从未见过节点或JavaScript的人来说也是如此。此外,它还会自动保护您免受长期内存泄漏,因为您的应用程序将在每次迭代后被终止。