• 微博和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(定时发送邮件例子)

     

     

  • 相关阅读:
    关于素数的具体问题
    Scala Apply
    Scala内部类
    Scala 类和对象
    Scala Tuple类型
    Scala数组
    sql server 游标
    表变量和临时表详解
    子查询详解
    EXEC 和 SP_EXECUTESQL的区别
  • 原文地址:https://www.cnblogs.com/0banana0/p/2495839.html
Copyright © 2020-2023  润新知