首页 新闻 会员 周边 捐助

关于定时执行任务的实现方案?

0
悬赏园豆:15 [待解决问题]

各位前辈,大家好。

我有一个这样的需求,用户随时向服务器添加定时任务,比如通过用户A添加一个今天9:55发布一篇文章的任务,用户B添加一个明天8:42添加一篇文章的定时认为,用户C添加一个今天10:56发布一篇文章的任务。

我现在的设想是使用轮询数据库的方式来执行,但又觉得太耗!

请教各位其他的方案,感谢。

osEye的主页 osEye | 初学一级 | 园豆:137
提问于:2013-08-12 09:59
< >
分享
所有回答(4)
0

按照时间先后顺序把文章ID和发布时间存到缓存中,每次只轮训第一条数据(时间最早的数据),时间到了就发布出去,并在缓存中删除该条数据,依次类推。

Eric.Chen | 园豆:175 (初学一级) | 2013-08-12 10:09

感谢你的回答。

定时任务对时间的准确性要求的很高,而且量非常大。

除了自己轮询还有其他的方案吗?

支持(0) 反对(0) osEye | 园豆:137 (初学一级) | 2013-08-12 10:12
0

建议使用Quartz.NET,参考园子里张善友的博文:详细讲解Quartz.NET

dudu | 园豆:29570 (高人七级) | 2013-08-12 10:47
0

你的需求是定时,这就要求任务一直跑才能达到要求,耗资源是没有办法的,不过你也不必太担心资源的问题,做好sql优化即可,比如每次先用最简单的sql查一下有没有满足的数据,再把满足的数据全部取出来, sql中加上nolock

针对定时,两个方案供参考:

1. Windows任务计算,设置为1分钟执行一次

2. 如果系统中有第三方的job程序,比如Quarz.dll, 设置为1分钟执行一次

 

注意点:为防止1分钟不能执行完,要对job加锁

田林九村 | 园豆:2367 (老鸟四级) | 2013-08-12 12:01
0

文章数据全部添加到数据库中就行了啊,然后控制显示的文章时间不要超过当前时间就行了,搞定SQL查询语句去,这样就不会显示明天的数据就行了。。。也不需要定时器什么的。

Miao31 | 园豆:202 (菜鸟二级) | 2013-08-12 12:59
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册