微博和qq说说定时发送畅想
一个简单的定时发送畅想
要给微博或者说说加上定时功能
首先 要给数据库相关表加上时间字段和状态字段
时间字段:2012-05-11 12:50:00
状态 :0和1
0表示已发送
1表示定时的未发送的
首先用户定义一个定时说说 插入一条数据 插入定义的时间
id useid content senddatetime state
1 001 正常的说说 2012-05-11 12:50:00 0
2 001 定时的说说 2012-05-11 13:30:00 1
现在在Global.asax 里的Application_Start定义timer
让1分钟执行一次 因为定时设置精确到分钟级
protected void Application_Start(Object sender, EventArgs e) { Timer t = new Timer(60000);//设计时间间隔,如果一个小时执行一次就改为3600000 ,这里一分钟调用一次 t.Elapsed += new ElapsedEventHandler(t_Elapsed); t.AutoReset = true; t.Enabled = true; } private void t_Elapsed(object sender, ElapsedEventArgs e) { //这里执行逻辑代码 }
t_Elapsed这个函数是委托参数 里边执行一个存储过程
查询出来所有用户的state=1的并且senddatetime<当前时间的id 然后批量修改符合记录的state=0
也就是每隔一分钟执行一次
update qquser set state=0 where senddatetime<getdate() and state=1
state=0的是大家包括自己可以看到的 state=1只有自己可以看到并且有声明(此条记录是定时说说) 别人看不到
这个还可以用sql的作业来搞定
当然还有更多的办法!!
希望大家给出各种思路.
哦 对了 要注意:
Application对象是有生命周期的,当网页没人访问或闲置过久,应用程序池会调用Application_End方法回收applicatioin里的对象资源,导致定时器无法工作。
解决办法看这里:http://www.cnblogs.com/liguangxi8/archive/2010/01/03/1638528.html(定时发送邮件例子)