[Ubuntu-zh] 有设计过cron 里面的时间 那种数据结构的嘛? 给下思路

Upsuper quanxunzhen在gmail.com
星期四 十月 7 10:41:17 BST 2010


我用PHP写过貌似……
应该是先找到下一个要运行的日期在计算时间吧……因为是互不影响的……
找日期就简单多了,反正你不可能几百年都不运行嘛……

2010/10/7 Guannan Ma <mythmgn在gmail.com>

>  你不可能把所有可能情况都转换为秒, 如果我这个作业run 12个月  不规则的间隔跑一次, 同时 可能还要考虑某个周末跑, 某个月末跑.
> 这样的情况都转换为秒, 枚举出来的可能性是超出你的想象的.
>
> 比如 1,4,5,7-30/2,41-50/4,52-59 1,4,5,7-30/2,41-50/4,52-59
>  1,4,5,7-14,16-30/2
> 1,3,5,7-11 *
>
> 这种组合有点极端, 我只是想描述一下 如果全部妙都计算出来不现实啊. 你并不知道多少个时间点 组合一下这个存储结构式巨大的..
>
>
>
> 用二叉树存储, 每次timer触发的时候进行下一次timer触发的计算. 只要得到下一次离这次最近的触发时间(XX妙即可)
> 不关心将所有的计算出来并提前存储.....
>
>
>
>
>
> 2010/10/7 Rhys <listofx在gmail.com>
>
> > 不理解为什么需要二叉树。一般数据结构的选择是为需要进行的操作服务的。
> >
> > 不能全转化为秒来计算吗?
> >
> > 2010/10/6 Guannan Ma <mythmgn在gmail.com>:
> > > Hi, all,
> > >
> > > 最近遇到个问题, 需要设计类似cron里面时间定义的timer数据结构.
> > >
> > > 以下是cron的定义
> > >
> > > [[[minute hour  day_of_month month day_of_week]]]  command
> > >
> > > 我需要实现除了command之外的timer数据结构.
> > >
> > > 我目前的想法是如下:
> > >
> > >
> > > minute hour dayof_.....  每一项做二叉线段树 每个线段树存储不交叉的内容.
> > >
> > > 如下(以minute为例):
> > >
> > >            [12 ,19]
> > >        |              |
> > > [1,9]       [30  ,  38]
> > >               |             |
> > >             [22,28]   [40, 50]
> > >                                |
> > >                                52
> > >
> > > hour dayof ...... 依次类推
> > >
> > > 做timer的时候, 计算最近的match点剩余的时间(XX秒).并返回.
> > >
> > > (做计算的时候反序 minute<-hour<-day_of_month<-month<-day_of_week 判断最
> > > 近时间距离(秒为单位), 即 先判断day_of_week 最后判断minute)
> > >
> > >
> > > 一个
> > >
> > > filter{
> > >     line_item m_h_dom_mon_dow[5]; //分别存 分钟 小时 日 月 星期中的日
> > > }
> > >
> > > timer_DIY{
> > >
> > > filter accept[MAX_ACCEPT_SIZE];  //这个是线段树的数组, 可以有N个这样的线
> > > 段树组成timer. 决策的时候遍历计算, 取最小值为下一次timer的触发时间.
> > >
> > > day array_deny[xx]; //这个是某些特殊的节假日等的filter
> > > }
> > >
> > >
> > > 有谁做过这方面的数据结构嘛? 能分享下 我觉得我的很笨拙..
> > >
> > >
> > > 谢谢
> > >
> > >
> > > --
> > > Guannan Ma <mythmgn在gmail.com>
> > >
> > > -------------- 下一部分 --------------
> > > 一个HTML附件被移除...
> > > URL:
> >
> https://lists.ubuntu.com/archives/ubuntu-zh/attachments/20101006/a54224db/attachment.htm
> > > --
> > > ubuntu-zh mailing list
> > > ubuntu-zh在lists.ubuntu.com
> > > https://lists.ubuntu.com/mailman/listinfo/ubuntu-zh
> > >
> > --
> > ubuntu-zh mailing list
> > ubuntu-zh在lists.ubuntu.com
> > https://lists.ubuntu.com/mailman/listinfo/ubuntu-zh
> >
> -------------- 涓嬩竴閮ㄥ垎 --------------
> 一个HTML附件被移除...
> URL:
> https://lists.ubuntu.com/archives/ubuntu-zh/attachments/20101007/be6643a4/attachment.htm
>
> --
> ubuntu-zh mailing list
> ubuntu-zh在lists.ubuntu.com
> https://lists.ubuntu.com/mailman/listinfo/ubuntu-zh
>
>
-------------- 下一部分 --------------
一个HTML附件被移除...
URL: https://lists.ubuntu.com/archives/ubuntu-zh/attachments/20101007/8e86aa50/attachment.htm 


关于邮件列表 ubuntu-zh 的更多信息