zoukankan      html  css  js  c++  java
  • 练习(time.tick定时器监控数据库)

    设立个定时器,监控数据库里fb_state(发布状态),并将数据库中一条记录的开始时间与截止时间和当前时间进行比对。若当前时间在开始时间与结束时间之间,则将发布状态设为1,否则为0.

    同时,将此段代码放到router里的init函数里,这样每次运行程序时都会启动此方法,并且直至程序中断才停止监控。

    (使用的是Beego框架)

    //监控已发布的contents
    func MonitorValidtimes() {
        log.Info("后台状态监控已开启")
        var PostFb, PreFb []orm.Params
    
    
        o := orm.NewOrm()
    
    
        T := time.Tick(time.Second)
        for now := range T {
            o.Raw("SELECT id,end_time FROM dt_content WHERE fb_state=?", 1).Values(&PostFb)
            o.Raw("SELECT id,start_time,end_time FROM dt_content WHERE fb_state=?", 0).Values(&PreFb)
            i, j := 0, 0
    
    
            //监控已发布contents
            for range PostFb {
                end_time := PostFb[i]["end_time"]
                id := PostFb[i]["id"]
                et, _ := strconv.ParseInt(end_time.(string), 10, 64)
                idi, _ := strconv.ParseInt(id.(string), 10, 64)
                if et <= now.Unix() {
                    o.Raw("Update dt_content SET fb_state=0 WHERE id=?", idi).Exec()
                }
                i++
            }
    
    
            //监控未发布contents
            for range PreFb {
                start_time := PreFb[j]["start_time"]
                end_time2 := PreFb[j]["end_time"]
                id2 := PreFb[j]["id"]
                st, _ := strconv.ParseInt(start_time.(string), 10, 64)
                et2, _ := strconv.ParseInt(end_time2.(string), 10, 64)
                id2i, _ := strconv.ParseInt(id2.(string), 10, 64)
                if st <= now.Unix() && now.Unix() < et2 {
                    o.Raw("Update dt_content SET fb_state=1 WHERE id=?", id2i).Exec()
                }
                j++
            }
    
    
        }
    }
  • 相关阅读:
    搜索
    c++ map与unordered_map区别及使用
    01BFS
    宇智波程序笔记55-Flutter 混合开发】嵌入原生View-iOS
    宇智波程序笔记54-解Bug之路-记一次线上请求偶尔变慢的排查
    宇智波程序笔记53-从红黑树的本质出发,彻底理解红黑树!
    宇智波程序笔记52-最受欢迎的微服务框架概览
    宇智波程序笔记51-JDK 15安装及新特性介绍
    宇智波程序笔记50-解Bug之路-记一次线上请求偶尔变慢的排查
    宇智波程序笔记49-link JDBC Connector:Flink 与数据库集成最佳实践
  • 原文地址:https://www.cnblogs.com/basque/p/5146372.html
Copyright © 2011-2022 走看看