handler.go 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. package qyfw
  2. import (
  3. "io/ioutil"
  4. "log"
  5. "os"
  6. "path/filepath"
  7. "qfw/util"
  8. "strings"
  9. "time"
  10. )
  11. var (
  12. AllJobs = map[string]*Job{}
  13. )
  14. //加载全部脚本
  15. func LoadAllLuaScript() {
  16. filepath.Walk("./luascript", func(path string, info os.FileInfo, err error) error {
  17. if info.IsDir() || !strings.HasSuffix(info.Name(), ".lua") {
  18. return nil
  19. }
  20. bs, err := ioutil.ReadFile(path)
  21. if err != nil {
  22. log.Println(err)
  23. return err
  24. }
  25. sp := NewLuaScript(info.Name(), string(bs))
  26. if sp != nil {
  27. AllJobs[sp.Name] = sp
  28. log.Println("成功加载脚本", info.Name())
  29. }
  30. return nil
  31. })
  32. go runJob()
  33. }
  34. //开始定时任务
  35. func runJob() {
  36. util.Try(func() {
  37. LoadDatasByEs(&SysConfig)
  38. util.WriteSysConfig(SysConfig)
  39. }, func(e interface{}) {})
  40. time.AfterFunc(time.Duration(util.IntAll(SysConfig["durationMinutes"]))*time.Minute, runJob)
  41. }
  42. //初始化脚本
  43. func NewLuaScript(name, luafile string) *Job {
  44. defer util.Catch()
  45. job := &Job{}
  46. job.Results = &[]map[string]interface{}{}
  47. job.Name = name
  48. job.ScriptFile = luafile
  49. job.EachListPool = make(chan bool, PoolSize)
  50. //只是单纯的验证一下,lua脚本是否有问题
  51. script := &Script{}
  52. if !script.LoadScript(name, luafile, true) {
  53. return nil
  54. }
  55. job.Appid = script.GetVar("appid")
  56. if job.Appid == "" {
  57. log.Println("error:从脚本", name, "中获取到Appid为空!")
  58. return nil
  59. }
  60. return job
  61. }