timer.go 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. package main
  2. import (
  3. "database/sql"
  4. "encoding/json"
  5. "fmt"
  6. "time"
  7. )
  8. var logData string
  9. // var logAdmin string
  10. var logDetail string
  11. func init() {
  12. go loadLog()
  13. }
  14. func loadLog() {
  15. logData = "[]"
  16. // logAdmin = "[]"
  17. logDetail = "[]"
  18. ticker := time.NewTicker(1 * time.Second)
  19. for {
  20. timer_get()
  21. <-ticker.C
  22. }
  23. }
  24. func timer_get() {
  25. // user
  26. rows, err := db.Query("select UNIX_TIMESTAMP(`log`.`time`), `user`.`name`, `log`.`type` from `log` LEFT JOIN `user` on `log`.`uid` = `user`.`id` where `log`.`type` != 0 AND `log`.`type` != 3 order by `log`.`time` desc LIMIT 50")
  27. defer rows.Close()
  28. if err != nil {
  29. logData = "[]"
  30. fmt.Printf("loadLog query error: %s\n", err)
  31. return
  32. }
  33. var data []*LogData
  34. for rows.Next() {
  35. d := &LogData{}
  36. rows.Scan(&d.Time, &d.Name, &d.Type)
  37. data = append(data, d)
  38. }
  39. j, err := json.Marshal(data)
  40. if err != nil {
  41. logData = "[]"
  42. fmt.Printf("loadLog json error: %s\n", err)
  43. return
  44. }
  45. logData = string(j)
  46. // select detail
  47. rows, err = db.Query("call get_log_details()")
  48. defer rows.Close()
  49. if err != nil {
  50. logDetail = "[]"
  51. fmt.Printf("loadLog query error: %s\n", err)
  52. return
  53. }
  54. var dataDetails []*LogDataDetails
  55. for rows.Next() {
  56. d := &LogDataDetails{}
  57. var t sql.NullInt64
  58. err = rows.Scan(&d.Uid, &d.Name, &t, &d.Fail)
  59. d.Time = int(t.Int64)
  60. dataDetails = append(dataDetails, d)
  61. }
  62. j, err = json.Marshal(dataDetails)
  63. if err != nil {
  64. logDetail = "[]"
  65. fmt.Printf("loadLog json error: %s\n", err)
  66. return
  67. }
  68. logDetail = string(j)
  69. }