首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >开发/管理/设计周期性任务/日历的最佳方法

开发/管理/设计周期性任务/日历的最佳方法
EN

Stack Overflow用户
提问于 2010-10-22 05:36:32
回答 4查看 3.9K关注 0票数 6

我正在讨论的一个例子类似于Google Calendar。当创建新的周期性任务时。

创建周期性任务“模板”后-所有单个任务都基于这些模板,是否创建所有单个任务并将其存储在数据库中?或者你只是存储“模板”循环事件和它们的异常?

如果用户请求一个“月”视图,而您想要显示所有的事件/任务,看起来就像是从模板实时创建输出,并且包含所有异常将比从模板创建每个重复任务并将其插入到数据库中的资源消耗要大得多。

这也将使搜索/排序等变得更加容易。

以前有没有人创造过这样的东西?想法?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-10-22 06:02:42

将其全部存储在数据库中。

您希望有一个"Task Template“表和一个"Task”表,其中存在一对多关系。

当用户指出他们想要重现一个任务时,创建一个“任务模板”记录,然后按照用户的指示创建尽可能多的“任务”(不要让用户创建太久的任务)。每个任务都通过一个外键链接到任务模板。其想法是,SQL在管理这些记录方面将比试图在基于一个模板的代码中完成这一切更有效率。这样,您在排序和筛选数据时将有更多的选择。毕竟,编写SQL查询比编写、测试和维护操作数据的PHP函数更容易。

我要给你的其他一些建议是:

  • 会尝试从您的“任务模板”记录中获取大量信息。保留模板覆盖的任务数、最后一项任务的结束日期、第一项任务和最后一项任务之间经过的时间等。当你想对任务进行排序和过滤时,这种“元数据”可以帮助你节省查询时间。
  • 在Date和FK字段上建立了一个索引,这也有助于查询时间。
  • 我刚刚在工作中开发了两个日历应用,受到了老板们的好评。我使用了"FullCalendar“JQuery插件(http://arshaw.com/fullcalendar/)。我使用JQuery AJAX来处理我的大多数事件,并且它内置了对月、日和周视图的支持。
票数 4
EN

Stack Overflow用户

发布于 2010-10-22 08:31:06

对于重复发生的事件,我前段时间做了以下工作:

当用户输入一个事件时,我存储了事件的日期模式GNU date style -的关键字是relative date formats.

  1. Then,我从创建下一年的事件开始。并创建了实际记录,其中我将相对日期转换为实际日期--例如,将“每个第一个星期一”转换为"mm-dd-YYYY“。这允许我显示它们,还允许用户例如移动单个事件或取消一个事件,等等。
  2. 然后计算出未来会走多远-我的想法是在实际页面被浏览时创建事件。例如,如果我在2011年6月之前创建了事件,而有人一直跳到2011年7月,我会迭代我的事件并将其设置为transparently.
  3. When用户更改相对模式,提出更新所有后续事件--除非他们已经有了自定义模式。相对模式使得计算所有这些数据变得非常容易。
票数 2
EN

Stack Overflow用户

发布于 2010-10-22 05:55:27

不久前我遇到了同样的问题,我没有重新发明轮子,而是使用了Google Calendar API。(http://code.google.com/apis/calendar/data/2.0/developers_guide.html)

您创建一个Google帐户并访问日历信息。有一些API可用于创建/编辑/删除循环条目。此外,您还可以指定日期/时间信息并查询匹配的事件。

当您在Google Calendar上创建事件时,您将收到一个令牌/id,您可以将其存储在您自己的数据库中,并在应用程序的上下文中引用它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3992187

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档