saveDb.go 825 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. package savedb
  2. import (
  3. "app.yhyue.com/moapp/jybase/mongodb"
  4. "log"
  5. "sync"
  6. "time"
  7. )
  8. type DbLogs struct {
  9. Cache []map[string]interface{}
  10. lock sync.Mutex
  11. Db mongodb.MongodbSim
  12. }
  13. // SaveLogTask 定时保存日志
  14. func (s *DbLogs) SaveLogTask() {
  15. s.lock.Lock()
  16. if len(s.Cache) >= 1 {
  17. tmp := s.Cache
  18. s.Cache = make([]map[string]interface{}, 0)
  19. go func() {
  20. log.Println("timer..save..visit..log", len(tmp))
  21. }()
  22. }
  23. s.lock.Unlock()
  24. time.AfterFunc(5*time.Minute, s.SaveLogTask)
  25. }
  26. func (s *DbLogs) AddLogToTask(data map[string]interface{}) {
  27. s.lock.Lock()
  28. s.Cache = append(s.Cache, data)
  29. if len(s.Cache) >= 5 {
  30. tmp := s.Cache
  31. s.Cache = make([]map[string]interface{}, 0)
  32. go func() {
  33. log.Println("save..visit..log", len(tmp), s.Db.SaveBulk("jy_gateway_logs", tmp...))
  34. }()
  35. }
  36. s.lock.Unlock()
  37. }