解决请求DNS解析的客户端数据未持久化的问题

This commit is contained in:
Alex Yang
2025-11-28 18:02:36 +08:00
parent ec1e051252
commit ca4a32422c
13 changed files with 700348 additions and 0 deletions

View File

@@ -169,6 +169,9 @@ func (s *Server) Start() error {
// 启动CPU使用率监控
go s.startCpuUsageMonitor()
// 启动自动保存功能
go s.startAutoSave()
// 启动UDP服务
go func() {
logger.Info(fmt.Sprintf("DNS UDP服务器启动监听端口: %d", s.config.Port))
@@ -764,6 +767,13 @@ func (s *Server) loadStatsData() {
}
s.monthlyStatsMutex.Unlock()
// 加载客户端统计数据
s.clientStatsMutex.Lock()
if statsData.ClientStats != nil {
s.clientStats = statsData.ClientStats
}
s.clientStatsMutex.Unlock()
logger.Info("统计数据加载成功")
}
@@ -823,6 +833,14 @@ func (s *Server) saveStatsData() {
}
s.monthlyStatsMutex.RUnlock()
// 复制客户端统计数据
s.clientStatsMutex.RLock()
statsData.ClientStats = make(map[string]*ClientStats)
for k, v := range s.clientStats {
statsData.ClientStats[k] = v
}
s.clientStatsMutex.RUnlock()
// 序列化数据
jsonData, err := json.MarshalIndent(statsData, "", " ")
if err != nil {