1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- package main
- import (
- "sync"
- "time"
- )
- /**
- 增加数据监控服务,每15分钟保存一次抽取情况
- **/
- var IS = &InfoStatus{
- time.Now().Unix(), 0, map[string]int{}, &sync.Mutex{}}
- func init() {
- go IS.Save()
- }
- type InfoStatus struct {
- Starttime int64
- Endtime int64
- Val map[string]int
- Lock *sync.Mutex
- }
- func (is *InfoStatus) Add(t string) {
- is.Lock.Lock()
- is.Val[t]++
- is.Lock.Unlock()
- }
- func (is *InfoStatus) Save() {
- is.Lock.Lock()
- is.Endtime = time.Now().Unix()
- save := map[string]interface{}{}
- all := 0
- for k, v := range is.Val {
- all += v
- save[k] = v
- }
- if all > 0 {
- save["starttime"] = is.Starttime
- save["endtime"] = is.Endtime
- save["flag"] = "indexser"
- is.Val = map[string]int{}
- go extractMgo.Save("datamonitor", save)
- }
- is.Starttime = is.Endtime
- is.Lock.Unlock()
- time.AfterFunc(15*time.Minute, is.Save)
- }
|