每 10 秒查询一次 sqlite 与使用超时与 node-cron

我有一个包含一张表的 sqlite 风格数据库,它有大约 10k 个项目,有 5 列。在其中一列中,我有一个“计时器”,基本上是我给出的一个数字,它的目的是随着时间(最好是每秒)的推移而减少它,直到它达到零。当它达到零时,我想执行一个操作。

思考过程

第一:我可以每 10 秒(setInternal)为每个需要的项目(可能是 10k 中的 2k)更新我的数据库 - 为了不强调它 - 并检查是否有任何项目达到零。我不情愿采用这种方式,因为我觉得它可能效率不高。

第二:由于我在 nodejs 上,我可以使用超时。读取一次我的数据库获取所有想要的用户,并为每个用户创建一个 setTimeout 方法。大约一分钟后更新数据库,nested-setInternal 由于每个 setTimeout 占用约 35 字节的 nodejs 堆,因此这是一个不错的方法。-现在我认为这是要走的路。

第三:我发现了这个https://github.com/kelektiv/node-cron github,它基本上是一个任务调度程序。在查看了它的代码之后,我不认为它很糟糕,但我真的不认为我必须在这里使用外部包。

注意:无论我使用上述哪种方法,以防进程崩溃,它们都会被重置(完全失去意义)而无需定期更新我的数据库,所以我想我无法避免这种情况。

问题:我应该怎么做才能每隔几秒有效地更新我的数据库中的计时器 -(所以我的进程一直处于活动状态) - 而不会耗尽我的资源?

对那些阅读整篇文章并觉得他们失去了时间的人感到抱歉。

CL。

不要将剩余时间存储在数据库中。而是存储操作的绝对时间戳。

然后,您可以简单地询问需要处理的任何操作:

SELECT *
FROM actions
WHERE timestamp > (last handled timestamp)
  AND timestamp <= (current timestamp);

(如果该timestamp列已建立索引,则此查询非常有效。)

您还可以获取下一个事件之前的时间,以编程超时:

SELECT timestamp
FROM actions
WHERE timestamp > (last handled timestamp)
ORDER BY timestamp ASC
LIMIT 1;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用Node-Cron每45分钟运行一次Cron Job

来自分类Dev

如何设置CRON作业在Linux中每10秒运行一次?

来自分类Dev

如何每10秒执行一次命令(无cron)?

来自分类Dev

如何在 ruby on rails 中每 10 秒运行一次 cron 作业

来自分类Dev

每10秒运行一次node.js脚本

来自分类Dev

每15秒执行一次Cron作业

来自分类Dev

每130秒运行一次CRON作业

来自分类Dev

使用mgo驱动程序,Mongo连接计数每10秒爬行一次

来自分类Dev

使用处理程序每10秒执行一次Android调用方法

来自分类Dev

是否需要每10秒钟使用服务重复一次吐司?

来自分类Dev

使用Node,Express(和Socket.io?)每1秒更新一次页面

来自分类Dev

两小时之间每10分钟运行一次Cron作业

来自分类Dev

如何每10秒调用一次函数?

来自分类Dev

每6-10秒播放一次声音

来自分类Dev

每10秒运行一次Python脚本

来自分类Dev

每10秒更新一次Ajax XML

来自分类Dev

每10秒写入一次特定文件

来自分类Dev

每10秒自动调用一次php函数

来自分类Dev

如何每10秒调用一次函数?

来自分类Dev

如何每10秒提交一次表格?

来自分类Dev

每10秒运行一次功能

来自分类Dev

每10秒自动发送一次文本

来自分类Dev

每10秒检查一次网站的Bash脚本

来自分类Dev

Ubuntu 18.04每10秒暂停一次

来自分类Dev

每 10 秒分组一次的生产计数

来自分类Dev

让cron作业每30分钟运行一次-使用cron.hourly?

来自分类Dev

在Node JS中每2年安排一次Cron

来自分类Dev

如果我每10秒钟使用此代码连接一次,Google会阻止我的IP吗?

来自分类Dev

使用postDelayed每5秒隐藏一次视图