package job import ( "sync" "time" "91porn-server/common" "91porn-server/common/log" "91porn-server/skd/job/cache/tonecache" "91porn-server/skd/job/stat/keyword" "91porn-server/skd/job/stat/kwrank" "91porn-server/skd/job/stat/rank" "91porn-server/skd/job/stat/rechorder" "91porn-server/skd/job/stat/statuser" "91porn-server/skd/job/stat/tagplay" "91porn-server/skd/job/stat/video" "91porn-server/skd/job/stat/vidtotal" "91porn-server/skd/job/stat/withorder" "91porn-server/skd/skdg" ) var ( statIsRunning = false //true:统计任务运行中,反之停止, statRankIsRunning = false ) // 运行统计任务 func runStat() { //防止重入 if statIsRunning { return } statIsRunning = true defer func() { statIsRunning = false }() doStat() //做统计业务 } // 做统计业务 func doStat() { defaultStatDate, err := getDefaultStatDate() if err != nil { log.Error("defaultStatDate invalid", log.E(err)) return } methodM := []func(){ //主要用于app func() { //"关键字" keyword.RunStat(defaultStatDate) kwrank.RunStat(defaultStatDate) //有执行顺序 }, func() { //"标签播放" tagplay.RunStat(defaultStatDate) }, func() { //"用户数据" statuser.RunStat(defaultStatDate) }, // func() { //"ranks" //rankcache.Update() // }, func() { //"tone" tonecache.Update() }, func() { //"视屏" video.RunStat(defaultStatDate) vidtotal.RunStat(defaultStatDate) //有执行顺序 }, func() { //"充值订单" rechorder.RunStat(defaultStatDate) }, func() { //"兑换订单" withorder.RunStat(defaultStatDate) }, } time.Sleep(time.Duration(30) * time.Second) wg := sync.WaitGroup{} wg.Add(len(methodM)) for _, method := range methodM { _method := method common.Go(func() { defer wg.Done() _method() }) } wg.Wait() } func getDefaultStatDate() (time.Time, error) { return time.ParseInLocation("2006-01-02", skdg.Conf.StartDate, time.Local) } // 运行排行榜 func runRankStat() { //防止重入 if statRankIsRunning { return } statRankIsRunning = true defer func() { statRankIsRunning = false }() rank.RunStat() }