【发布时间】:2017-04-01 04:09:06
【问题描述】:
我有一个包含一个表的 sqlite 风味数据库,它有大约 10k 个项目和 5 列。在其中一列中,我有一个“计时器”,基本上是我给出的一个数字,它的目的是随着时间(理想情况下是每秒)的流逝而减少它,直到它达到零。当它达到零时,我想执行一个动作。
思考过程
1st:我可以每 10 秒(setInternal)为每个需要的项目(可能是 10k 中的 2k)更新我的数据库 - 为了不强调它 - 并检查是否有任何项目达到零.我不太愿意这种方式,因为我觉得它可能效率不高。
第二次: 因为我在 nodejs 上,所以我可以使用超时。读一次我的数据库得到所有想要的用户,并为每个用户创建一个 setTimeout 方法。大约一分钟后更新数据库,nested-setInternal 由于每个 setTimeout 占用大约 35 字节的 nodejs 堆,因此它不是一个坏方法。 -现在我认为这是该去的地方了。
3rd:我发现了这个https://github.com/kelektiv/node-cron github,它基本上是一个任务调度器。看了一会儿它的代码,我不认为它不好,但我真的不认为我必须在这里使用外部包。
注意:如果我在进程崩溃的情况下使用上述任何方法,它们将被重置(完全失去意义)而不定期更新我的数据库,所以我想我无法避免这种情况。
问题:我应该怎么做才能在我的数据库中每隔几秒有效地更新一个计时器(所以我的进程一直处于活动状态)而不耗尽我的资源?
对于那些阅读整本书并觉得自己浪费时间的人感到抱歉。
【问题讨论】:
标签: javascript node.js sqlite settimeout