123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- package main
- // This code handles periodic statistics logging.
- //
- // The only thing it keeps track of is how many connections had the client_ip
- // parameter. Write true to statsChannel to record a connection with client_ip;
- // write false for without.
- import (
- "log"
- "time"
- )
- const (
- statsInterval = 24 * time.Hour
- )
- var (
- statsChannel = make(chan bool)
- )
- func statsThread() {
- var numClientIP, numConnections uint64
- prevTime := time.Now()
- deadline := time.After(statsInterval)
- for {
- select {
- case v := <-statsChannel:
- if v {
- numClientIP++
- }
- numConnections++
- case <-deadline:
- now := time.Now()
- log.Printf("in the past %.f s, %d/%d connections had client_ip",
- (now.Sub(prevTime)).Seconds(),
- numClientIP, numConnections)
- numClientIP = 0
- numConnections = 0
- prevTime = now
- deadline = time.After(statsInterval)
- }
- }
- }
|