123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- package qyfw
- import (
- "io/ioutil"
- "log"
- "os"
- "path/filepath"
- "qfw/util"
- "strings"
- "sync"
- "time"
- )
- var (
- AllJobs = map[string]*Job{}
- LoadLuaScripePool = make(chan bool, 1)
- LoadLuaScripeWait = &sync.WaitGroup{}
- )
- //加载全部脚本
- func LoadAllLuaScript() {
- filepath.Walk("./luascript", func(path string, info os.FileInfo, err error) error {
- LoadLuaScripePool <- true
- LoadLuaScripeWait.Add(1)
- go func() {
- defer func() {
- <-LoadLuaScripePool
- LoadLuaScripeWait.Done()
- }()
- if info.IsDir() || !strings.HasSuffix(info.Name(), ".lua") {
- return
- }
- bs, _ := ioutil.ReadFile(path)
- sp := NewLuaScript(strings.TrimRight(info.Name(), ".lua"), string(bs))
- if sp != nil {
- AllJobs[sp.Name] = sp
- log.Println("成功加载脚本", info.Name())
- }
- }()
- return nil
- })
- LoadLuaScripeWait.Wait()
- go runJob()
- }
- //开始定时任务
- func runJob() {
- util.Try(func() {
- LoadDatasByEs(&SysConfig)
- util.WriteSysConfig(SysConfig)
- }, func(e interface{}) {})
- time.AfterFunc(time.Duration(util.IntAll(SysConfig["durationMinutes"]))*time.Minute, runJob)
- }
- //初始化脚本
- func NewLuaScript(name, luafile string) *Job {
- defer util.Catch()
- job := &Job{}
- job.Results = &[]map[string]interface{}{}
- job.Name = name
- job.ScriptFile = luafile
- job.EachListPool = make(chan bool, PoolSize)
- //只是单纯的验证一下,lua脚本是否有问题
- script := &Script{}
- if !script.LoadScript(name, luafile, true) {
- return nil
- }
- return job
- }
|