我正在实现一个node.js而不是实时民意调查创建和投票系统,其中管理员可以创建一个民意调查并设置一个结束日期,然后当这个日期到达时,系统关闭民意调查,向订阅用户发送一封电子邮件并且用户不能再投票了。我已经实现了所有其他功能,但我正在努力在那个日期结束民意调查。我想到了一些持久的类似cron的调度程序,在那里我设置了在既定日期结束投票的工作,但我不知道这是否是最好的方法。您对如何解决这个问题有任何想法吗?感谢
答案 0 :(得分:0)
有两种基本方法 - 进程内和进程外。进程中更简单,但它需要您的主程序运行。进程外更加健壮,因为您可以使用其主要功能是可靠地执行预定作业的系统(例如,cron)。
对于Javascript中的进程内方法,我建议在启动时,阅读显示轮询仍然打开的投票记录(布尔标志,而不是日期),从结束日期减去当前日期,并使用{ {1}}安排远期未来的函数调用(如果差异为负,则立即调度)。该功能可以执行您需要的任何操作(发送电子邮件,更新记录等)。它应该做的最后一件事是更新原始记录以指示"成功关闭"。您希望此函数为re-entrant,因此,如果您的流程在中途停止,则下次启动时仍会看到过去有结束日期的投票记录,但没有"成功关闭&# 34;国旗,然后再试一次。