Chinaunix
标题:
请教实现类似 unix系统中crontab 的时间监控功能 的算法
[打印本页]
作者:
emate
时间:
2003-03-02 21:13
标题:
请教实现类似 unix系统中crontab 的时间监控功能 的算法
我现在的主程序是每sleep5秒运行一次,
然后监控判断当今时刻是否需要触发某一动作,
我是模仿crontab ,给用户设置 每月的第几号,每星期的第几周, 每天的第几时,每小时的第几分钟
现在在具体判断运行时发现问题,即某一时某一分钟符合条件,sleep5秒后依旧时符合条件。我现在为每个判断设置了一个GregorianCalendar,第一次符合时就设置该GregorianCalendar 为当前时间,第二次时如果是同一天(或者同一小时,同一分钟),就忽略跳出。但现在问题又来了,如果是原来设置的两个条件(比如某小时某分钟),在程序运行时如果仅仅改变了其中的一个条件,就没法判断了,请问有何解决办法?
同时想请教下各位做过类似功能的,我这样做好不好,如何改进? 或者有没有其他更好的方法?
谢谢
btw 我用的是java ,但语言不是问题,现在只讨论算法
作者:
emate
时间:
2003-03-02 21:57
标题:
请教实现类似 unix系统中crontab 的时间监控功能 的算法
up
作者:
gadfly
时间:
2003-03-03 00:03
标题:
请教实现类似 unix系统中crontab 的时间监控功能 的算法
不是特别明白你的意思。
为什么第一次设置的时候不能判断这两个条件,如果符合,就设置这两个条件好了。
我用java做过一个类似的东西。但是利用了crontab(unix下)或者at(windows)这样的
工具。
我的应用对不同的对象有不同的周期性操作需求,但是却不能直接用crontab和at,因为
对象有可能很多,而且直接操作crontab和at也不灵活。
我的做法是为每个操作对象定义一个起始操作的时间,再定义一个操作周期。我的运行程序是由cron或者at定时运行的。运行程序就是读取这些对象的周期配置,判断这个时间段,该不该操作某个对象。判断的根据有几个,一个是cron调用应用的周期,一个就是对象
第一次操作的时间,还有就是两次操作的周期。
举个例子,应用在cron中5分钟运行一次。某个对象操作周期是4小时一次,第一次是某天
的2点,应用在14:00执行的时候,我就会判断这个对象该不该在14:00~14:05之间操作。
而这个判断是可以根据第一次时间和操作周期来决定的。
我想不通过cron来做也是一样的。那就是sleep的间隔时间,作为划分区间的依据。
不知道能不能实现你的想法?
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2