save.go 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. package util
  2. import "time"
  3. var (
  4. SaveSize = 200
  5. SaveBasePool = make(chan map[string]interface{}, 5000)
  6. SaveBaseSp = make(chan bool, 1)
  7. BaseField = []string{"s_info_id", "s_area_code", "s_city_code", "s_district_code", "f_budget", "f_bidamount", "f_biddiscount", "s_title", "s_toptype_code", "s_subtype_code", "s_projectname", "s_projectcode", "s_buyerclass_code", "d_publishtime", "d_comeintime", "d_bidopentime", "d_bidendtime", "i_isvalidfile", "s_href", "s_purchasing", "i_multipackage", "s_site", "s_buyer_id", "s_agency_id", "d_updatetime", "d_createtime"}
  8. )
  9. func InitSaveService() {
  10. go SaveBaseFunc()
  11. }
  12. func SaveBaseFunc() {
  13. arru := make([]map[string]interface{}, SaveSize)
  14. indexu := 0
  15. for {
  16. select {
  17. case v := <-SaveBasePool:
  18. arru[indexu] = v
  19. indexu++
  20. if indexu == SaveSize {
  21. SaveBaseSp <- true
  22. go func(arru []map[string]interface{}) {
  23. defer func() {
  24. <-SaveBaseSp
  25. }()
  26. MysqlTool.InsertBulk(T_dwd_f_bid_baseinfo, BaseField, arru...)
  27. }(arru)
  28. arru = make([]map[string]interface{}, SaveSize)
  29. indexu = 0
  30. }
  31. case <-time.After(1000 * time.Millisecond):
  32. if indexu > 0 {
  33. SaveBaseSp <- true
  34. go func(arru []map[string]interface{}) {
  35. defer func() {
  36. <-SaveBaseSp
  37. }()
  38. MysqlTool.InsertBulk(T_dwd_f_bid_baseinfo, BaseField, arru...)
  39. }(arru[:indexu])
  40. arru = make([]map[string]interface{}, SaveSize)
  41. indexu = 0
  42. }
  43. }
  44. }
  45. }