From 9ee1d7c81171be2bf959226788d38e3caf85e0b6 Mon Sep 17 00:00:00 2001 From: hch <305670599@qq.com> Date: 星期五, 22 三月 2019 16:58:10 +0800 Subject: [PATCH] 860312 优化开关服时间,memmove在大数据情况下耗时会几何数增加;并且优化个人邮件30天后清理,避免流失玩家合服后积累 --- ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerCompensation.py | 22 ++++++++++++++++++++++ 1 files changed, 22 insertions(+), 0 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerCompensation.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerCompensation.py index 75bf6eb..b456a80 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerCompensation.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerCompensation.py @@ -853,11 +853,33 @@ return +##清理超时30天的个人邮件, 否则流失玩家在不断合服情况下数据会累积 +# 个人邮件暂无过期时间设定,只有30天清理逻辑,以创建时间为准 +# @param None +# @return None +def ClearUpPersonalCompensation(): + #校验过期补偿 + curTime = datetime.datetime.today() + needClearGUIDList = [] + allCnt = GameWorld.GetCompensationMgr().GetAllPersonalCompensationCount() + for i in xrange(allCnt): + curMail = GameWorld.GetCompensationMgr().AtAllPersonalCompensation(i) + # 超过接收邮件30天则完全删除此邮件 + limitTime = datetime.datetime.strptime(curMail.CreateTime, ChConfig.TYPE_Time_Format) + datetime.timedelta(days = 30) + if limitTime < curTime: + needClearGUIDList.append([curMail.PlayerID, curMail.GUID]) + + #删除过期补偿信息, 没有主动通知在线玩家 + for playerID, GUID in needClearGUIDList: + ClearPersonalCompensation(playerID, GUID) + return + ## 清理超时补偿, 个人邮件在超过上限后才会自动删除 # @param None # @return None def ClearUpTimeOutCompensation(): + ClearUpPersonalCompensation() ClearUpEntireCompensation() return -- Gitblit v1.8.0