我有一个应用程序,允许用户安排任务随时运行。 (带有重复项目的待办事项清单。)
我需要以某种方式重新触发这些事件,以便每次通过更新对象上的属性来重新显示它们时 - 它还可以向用户发送通知。
我的计划是让一个cron作业以每分钟/小时/短的间隔运行,在那个作业中,它会找到所有项目的日程安排与当前时间相匹配,或者应该在上次工作后更新但是,如果没有遍历每个项目,我看不到快速查询这些对象的方法。
使用Ice Cube我可以非常轻松,干净地保存数据库中的日程安排,但我没有看到找到与特定时间点匹配的所有事件的方法。
我知道,一旦我找到了我可以运行occurring_between?
或occurring_at?
的项目来查找我是否应该运行它,但是这需要将每个项目拉入内存并手动检查它,这不是很可扩展性。
有没有办法让我失踪,还是有其他建议来完成我在这里要做的事情?它还很早,所以我没有依赖Ice Cube或任何当前的实现。
答案 0 :(得分:0)
经过多次考虑之后 - 我没有看到任何方法来做到这一点,所以我想出了一些我会做的小黑客:
在项目对象上,我还有2个附加属性。其中一个是schedule
,它被送到Ice Cube来生成重复出现的所有日期/时间。下一个将是next_occurrence
,我将在创建时和每次续订项目时设置。
然后在工作人员中,我将查询过去具有next_occurrence
的所有项目并处理它们,将next_occurrence
重置为下次计划发生的时间。
如果有人有更好的解决方案,我会留下这个答案没有标记。