package main import ( "database/sql" "encoding/json" "fmt" "time" ) var logData string // var logAdmin string var logDetail string func init() { go loadLog() } func loadLog() { logData = "[]" // logAdmin = "[]" logDetail = "[]" ticker := time.NewTicker(3 * time.Second) for { timer_get() <-ticker.C } } func timer_get() { // user 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") defer rows.Close() if err != nil { logData = "[]" fmt.Printf("loadLog query error: %s\n", err) return } var data []*LogData for rows.Next() { d := &LogData{} rows.Scan(&d.Time, &d.Name, &d.Type) data = append(data, d) } j, err := json.Marshal(data) if err != nil { logData = "[]" fmt.Printf("loadLog json error: %s\n", err) return } if string(j) == "null" { logData = "[]" } else { logData = string(j) } // select detail rows, err = db.Query("call get_log_details()") defer rows.Close() if err != nil { logDetail = "[]" fmt.Printf("loadLog query error: %s\n", err) return } var dataDetails []*LogDataDetails for rows.Next() { d := &LogDataDetails{} var t sql.NullInt64 err = rows.Scan(&d.Uid, &d.Name, &t, &d.Fail) d.Time = int(t.Int64) dataDetails = append(dataDetails, d) } j, err = json.Marshal(dataDetails) if err != nil { logDetail = "[]" fmt.Printf("loadLog json error: %s\n", err) return } logDetail = string(j) if string(j) == "null" { logDetail = "[]" } else { logDetail = string(j) } }