0

我有一个应用程序,允许用户安排任务在他们需要的时候运行。(带有重复项目的待办事项列表。)

我需要通过更新对象的属性以某种方式重新触发这些事件以在每次他们的日程安排出现时再次显示 - 它也可能向用户发送通知。

我对此的计划是有一个每分钟/小时/短间隔运行的 cron 作业,并且在该作业中,它会找到所有具有与当前时间匹配或自上次作业以来应该更新的时间表的项目,但是,没有遍历每个项目,我看不到查询这些对象的快速方法。

使用Ice Cube,我可以非常轻松、干净地将日程保存在我的数据库中,但我没有找到一种方法来查找与特定时间点匹配的所有事件。

我知道一旦我找到可以运行的项目occurring_between?occurring_at?查找是否应该运行它,但这需要将每个项目拉入内存并手动检查它,这不是非常可扩展的。

有没有我想念的方法,或者是否有其他建议可以完成我在这里尝试做的事情?现在还很早,所以我不喜欢 Ice Cube 或任何当前的实现。

4

1 回答 1

0

经过一番思考 - 我没有看到任何方法可以做到这一点,所以我想出了一个小技巧,我会做:

在 item 对象上,我将有 2 个附加属性。一个schedule是输入到 Ice Cube 以生成所有要重复的日期/时间。下一个是next_occurrence,我将在创建和每次更新项目时设置。然后在工作人员中,我将查询next_occurrence过去有 a 的所有项目并处理它们,将 重置为next_occurrence下一次计划发生的时间。

如果有人有更好的解决方案,我会暂时不标记这个答案。

于 2018-03-08T20:12:47.030 回答