Exemple #1
0
// 显示数据大小信息(每5分钟更新一次)
func displayDataSize() {
	for {
		// 刚启动时不需要显示信息,故将Sleep放在前面,而不是最后
		time.Sleep(5 * time.Minute)

		// 组装需要记录的信息
		msg := fmt.Sprintf("总共收到%s,发送%s.\t", mathUtil.GetSizeDesc(client.TotalReceiveSize()), mathUtil.GetSizeDesc(client.TotalSendSize()))
		msg += fmt.Sprintf("当前客户端数量:%d, 玩家数量:%d", clientBLL.GetClientCount(), playerBLL.GetPlayerCount())
		logUtil.Log(msg, logUtil.Debug, true)
	}
}
Exemple #2
0
// 清理过期的客户端
func clearExpiredClient() {
	for {
		// 休眠指定的时间(单位:秒)(放在此处是因为程序刚启动时并没有过期的客户端,所以先不用占用资源;并且此时LogPath尚未设置,如果直接执行后面的代码会出现panic异常)
		time.Sleep(configBLL.CheckExpireInterval() * time.Second)

		beforeClientCount := clientBLL.GetClientCount()
		beforePlayerCount := playerBLL.GetPlayerCount()

		// 获取过期的客户端列表
		expiredClientList := clientBLL.GetExpiredClientList()
		expiredClientCount := len(expiredClientList)
		if expiredClientCount == 0 {
			continue
		}

		for _, item := range expiredClientList {
			playerBLL.DisconnectByClient(item, disconnectType.FromExpire)
		}

		// 记录日志
		logUtil.Log(fmt.Sprintf("清理前的客户端数量为:%d,清理前的玩家数量为:%d, 本次清理不活跃的数量为:%d", beforeClientCount, beforePlayerCount, expiredClientCount), logUtil.Debug, true)
	}
}