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