设立个定时器,监控数据库里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++
        }

    }
}

练习(time.tick定时器监控数据库)的更多相关文章

  1. 分布式监控系统Zabbix3.2监控数据库的连接数

    在 分布式监控系统Zabbix3.2跳坑指南 和 分布式监控系统Zabbix3.2给异常添加邮件报警 已经介绍了如何安装以及报警.此篇通过介绍监控数据库的3306端口连接数来了解如何监控其它端口和配置 ...

  2. Spring Boot + Druid 监控数据库(三)

    Druid可以做什么?  1) 可以监控数据库访问性能,Druid内置提供了一个功能强大的StatFilter插件,能够详细统计SQL的执行性能,这对于线上分析数据库访问性能有帮助. 2) 替换DBC ...

  3. PostgreSQL 监控数据库活动

    监控数据库活动 1. 标准Unix 工具 [root@mysqlhq ~]# ps auxww | grep ^postgrespostgres 12106 0.0 0.0 340060 15064 ...

  4. spring配置druid连接池和监控数据库访问性能

    Druid连接池及监控在spring配置如下: <bean id="dataSource" class="com.alibaba.druid.pool.DruidD ...

  5. 监控SQL:通过SQL Server的DDL触发器来监控数据库结构的变化(1)

    原文:监控SQL:通过SQL Server的DDL触发器来监控数据库结构的变化(1) 如果你要同步不同数据库之间的数据,首先会想到的是数据库复制技术,但如果让你同步数据库的结构,你会想到什么呢? 下面 ...

  6. Canal的简单使用(监控数据库数据的变化)

    原文:https://www.cnblogs.com/java-spring/p/8930740.html canal可以用来监控数据库数据的变化,从而获得新增数据,或者修改的数据,用于实际工作中,比 ...

  7. 监控数据库SqlServer

    监控数据库的连接数select COUNT( * ) from master.dbo.sysprocesses select COUNT( * ) from master.dbo.sysprocess ...

  8. 监控数据库运行 - MS SQL 日常维护管理常用脚本(二)

    查看数据库登录名信息 use mastergoSELECT name AS LoginName , dbname AS DefaultDB , createdate AS CreateDate, up ...

  9. LoadRunner监控数据库服务器

    使用LoadRunner的数据库服务器资源监控器,可以在场景或会话步骤运行期间监控DB2.Oracle.SQL Server或Sybase数据库的资源使用率.在场景或会话步骤运行期间,使用这些监控器可 ...

随机推荐

  1. FTP主动模式(PORT)与被动模式(PASV)

    待完善 参考文章0 参考文章1

  2. Spring Security 入门篇

    本文是一个笔记系列,目标是完成一个基于角色的权限访问控制系统(RBAC),有基本的用户.角色.权限管理,重点在Spring Security的各种配置.万丈高楼平地起,接下来,一步一步,由浅入深,希望 ...

  3. 大数据开发-Flink-数据流DataStream和DataSet

    Flink主要用来处理数据流,所以从抽象上来看就是对数据流的处理,正如前面大数据开发-Flink-体系结构 && 运行架构提到写Flink程序实际上就是在写DataSource.Tra ...

  4. 使用C#实现一个PPT遥控器

    说明 本项目参考了 https://github.com/yangzhongke/PhoneAsPrompter 项目来完成实现,并对其进行了一些修改完善. 完整代码可以到 https://githu ...

  5. 2-9-9-12分页机制(xp)

    10-10-12分页限制 10-10-12分页因为页表PEB只有四个字节所以只能访问2^32 = 4GB物理地址空间,现在的物理内存都大于4GB为了能访问到更多的物理内存2-9-9-12将PEB的大小 ...

  6. class的大小

    3个问题: sizeof一个空类是多大?为什么?编译器为什么这么做? 在这个类中添加一个virtual函数后再sizeof,这时是多大?为什么? 将这个类再virtual继承一个其它的空类,这是多大? ...

  7. UVA 160 - Factors and Factorials

     Factors and Factorials  The factorial of a number N (written N!) is defined as the product of all t ...

  8. [DB] Spark Core (2)

    RDD WordCount处理流程 sc.textFile("/root/temp/data.txt").flatMap(_.split(" ")).map(( ...

  9. [刷题] 455 Assign Cookies

    要求 贪心算法的关键:判断问题是否可以用贪心算法解决 给小朋友们分饼干,每个小朋友"贪心指数"为g(i),饼干大小值s(i) g(i):小朋友需要的饼干大小的最小值 若s(j)&g ...

  10. 【转载】Windows 10系统默认将画面显示比例调整至125%或150%,最高分辨率已经达到3840×2160(4K)这一级别。

    高分屏打开软件界面模糊?不会设置太浪费 2017-08-31 19:37 抹又重彩 现在有好多朋友都喜欢并买了高分屏笔记本电脑.高分屏笔记本就是配有高分辨率屏幕的笔记本.为了给用户带来更好的视觉体验, ...