save.go 768 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. package main
  2. import "time"
  3. func saveMethod() {
  4. arru := make([]map[string]interface{}, saveSize)
  5. indexu := 0
  6. for {
  7. select {
  8. case v := <-savePool:
  9. arru[indexu] = v
  10. indexu++
  11. if indexu == saveSize {
  12. saveSp <- true
  13. go func(arru []map[string]interface{}) {
  14. defer func() {
  15. <-saveSp
  16. }()
  17. Mgo.SaveBulk(GF.Env.Savecoll, arru...)
  18. }(arru)
  19. arru = make([]map[string]interface{}, saveSize)
  20. indexu = 0
  21. }
  22. case <-time.After(1000 * time.Millisecond):
  23. if indexu > 0 {
  24. saveSp <- true
  25. go func(arru []map[string]interface{}) {
  26. defer func() {
  27. <-saveSp
  28. }()
  29. Mgo.SaveBulk(GF.Env.Savecoll, arru...)
  30. }(arru[:indexu])
  31. arru = make([]map[string]interface{}, saveSize)
  32. indexu = 0
  33. }
  34. }
  35. }
  36. }