()
| 63 | } |
| 64 | |
| 65 | func (sm *SessionManager) cleanupLoop() { |
| 66 | ticker := time.NewTicker(10 * time.Minute) |
| 67 | defer ticker.Stop() |
| 68 | for range ticker.C { |
| 69 | sm.mu.Lock() |
| 70 | now := time.Now() |
| 71 | removed := 0 |
| 72 | for convID, entry := range sm.sessions { |
| 73 | if now.Sub(entry.lastUsed) > sm.ttl { |
| 74 | delete(sm.sessions, convID) |
| 75 | removed++ |
| 76 | } |
| 77 | } |
| 78 | if removed > 0 { |
| 79 | log.Printf("[session] 清理过期 session %d 个,当前活跃 %d 个", removed, len(sm.sessions)) |
| 80 | } |
| 81 | sm.mu.Unlock() |
| 82 | } |
| 83 | } |