From e1dbd84e697445ea0c5f73075f56f97e5849ae53 Mon Sep 17 00:00:00 2001 From: hch <305670599@qq.com> Date: 星期五, 08 三月 2019 14:58:15 +0800 Subject: [PATCH] 6328 【后端】优化代码eval - json只适合字符串序列化,并且尽量用于非中文;建议使用cPickle 的dumps 和loads,协议用2,可支持所有类型,缺点为序列化后不可阅读 --- ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerViewCache.py | 21 +++++++++++---------- 1 files changed, 11 insertions(+), 10 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerViewCache.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerViewCache.py index 525da05..3da6842 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerViewCache.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerViewCache.py @@ -32,6 +32,7 @@ import ChConfig import time +import cPickle import json ViewCacheMgr = GameWorld.GameWorldData.GetPlayerViewCacheMgr() @@ -85,7 +86,7 @@ # 同步更新助战信息 if PlayerFBHelpBattle.IsInHelpBattleCheckInList(PlayerID): - PropDataDict = json.loads(PropData) + PropDataDict = cPickle.loads(PropData) fightPower = PropDataDict.get("FightPower", 0) familyID = PropDataDict.get("FamilyID", 0) playerName = PropDataDict.get("Name", "") @@ -214,11 +215,11 @@ sendPack.PlusDataSize = len(sendPack.PlusData) else: #成功回包 缓存数据 - sendPack.PropData = curCache.GetPropData() + sendPack.PropData = json.dumps(cPickle.loads(curCache.GetPropData()), ensure_ascii=False) sendPack.PropDataSize = len(sendPack.PropData) - sendPack.ItemData = GetItemData(curCache) + sendPack.ItemData = json.dumps(cPickle.loads(GetItemData(curCache)), ensure_ascii=False) sendPack.ItemDataSize = len(sendPack.ItemData) - sendPack.PlusData = GetPlusData(curCache) + sendPack.PlusData = json.dumps(cPickle.loads(GetPlusData(curCache)), ensure_ascii=False) sendPack.PlusDataSize = len(sendPack.PlusData) NetPackCommon.SendFakePack(curPlayer, sendPack) @@ -236,7 +237,7 @@ return playerEquipList = [] - equipItemList = json.loads(itemData) + equipItemList = cPickle.loads(itemData) for equipItemDict in equipItemList: equipIndex = equipItemDict["ItemIndex"] if equipIndex not in ShareDefine.RoleEquipType: @@ -276,7 +277,7 @@ answerPack.OnlineType = ChConfig.Def_Offline answerPack.ServerGroupID = 0 else: - cacheDict = json.loads(curCache.GetPropData()) + cacheDict = cPickle.loads(curCache.GetPropData()) answerPack.PlayerID = clientPack.PlayerID answerPack.PlayerName = cacheDict["Name"] @@ -305,14 +306,14 @@ curCache = ViewCacheMgr.FindCache(playerID) if not curCache: return - PropData = json.loads(curCache.GetPropData()) + PropData = cPickle.loads(curCache.GetPropData()) PropData["FamilyID"] = familyID PropData["FamilyName"] = familyName playerLV = PropData["LV"] - PropData = json.dumps(PropData, ensure_ascii=False) - ItemData = curCache.GetItemData() - PlusData = curCache.GetPlusData() + PropData = cPickle.dumps(PropData, 2) + ItemData = GetItemData(curCache) + PlusData = GetPlusData(curCache) UpdatePlayerCache(playerID, PropData, ItemData, PlusData, True if playerLV > 150 else False) return -- Gitblit v1.8.0