1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
Ã.hc@s‹ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl    Z    ddl
Z
ddl Z ddl Z ddl Z dZdZdZdZd„Zd„Zd„Zd    „Zd
„Zed „Zd „Zd „Zdd„Zd„Zd„Zdefd„ƒYZd„Z d„Z!d„Z"d„Z#d„Z$d„Z%d„Z&d„Z'dS(iÿÿÿÿNsC:\ServerRealTimeBackups.rtbiicCs$tjdƒtƒs tƒndS(NsµØÍ¼·þÎñÆ÷Æô¶¯(t    GameWorldtDebugLogtLoadGameWorldDataFromBackuptLoadGameWorldDataFromDB(((sdD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\DB\DBDataMgr.pyt OnServerStart's     
cCs tƒdS(N(tSaveGameWorldDataToDB(((sdD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\DB\DBDataMgr.pyt OnServerClose.scCs]tjr dStjƒtjƒ|j|jgddggkrOttƒn
tt    ƒdS(Nii(
t
PyGameDatatg_serverClosingtDBFamilytOnMinutet DBBillboardthourtminutetBackupGameWorldDatatTruetFalse(tcurTime((sdD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\DB\DBDataMgr.pyR
3s    
 
! 
c
Csèg}xËtj|ƒD]º\}}}x¨|D] }|jtƒsGq,ntjj||ƒ}||jdƒ jdƒ}t|ƒdkrq,nt    j
|dƒ}t    j
|dƒ}    |j |    ||gƒq,WqW|j dt ƒ|S(Ns.t_iiitreverse(tostwalktendswitht BakFileTypetpathtjointindextsplittlenRtToIntDeftappendtsortR(
tbakPatht bakFileListtparentRt    filenamestfilenametfullPathtbakInfot dataVersionNOtbakTime((sdD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\DB\DBDataMgr.pytGetBakFileSortListAs c
Cstjƒjƒ}d|}tjjt|ƒ}tjd|ƒt|ƒ}|setjdƒdS|d}|d}|d}|t    j
kr²tj d|t    j
fƒ‚ntjd|ƒt |d    ƒ}|j ƒ}|jƒtj|ƒ}    |    s‚nt|    dƒt|    ƒtS(
NsS%ss ¼ÓÔØ±¸µµ: %ss ²»´æÔÚ±¸µµ!iiisk±¸µµÊý¾Ý°æ±¾ºÅУÑéʧ°Ü£¬ÇëʹÓÃÕýÈ·°æ±¾·þÎñÆ÷Æô¶¯ÖØÐµ¼ÈëÊý¾Ý! bakVersionNO=%s, GAMEWORLD_DATA_VERSION_NO=%ss ¶ÁÈ¡±¸µµ: %strb(Rt GetGameWorldt GetServerIDRRRtBakRoottLogR)tDBStructtGAMEWORLD_DATA_VERSION_NOtErrLogtopentreadtclosetCommFunct
DecompresstLoadPyGameDataRR(
tserverIDt
serverNametBakDirR!t finalBakInfot bakVersionNOt bakFilePathtftcompressed_datatsaveData((sdD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\DB\DBDataMgr.pyRRs2
 
 
 
     
 
cCstjr dStjs'tjdƒdSttjƒƒ}|rj|tjtdkrjtjdƒdSntj    ƒj
ƒ}d|}t j j t|ƒ}tjd|ƒt j j|ƒsÎt j|ƒntj}tj|tjƒ}t j j |d|||tfƒ}tƒ}tjd|t|ƒ|fƒtj|ƒ}    |    s`tjdƒdStjd    t|    ƒƒy*t|d
ƒ}
|
j|    ƒ|
jƒWndSX|t_t|ƒ} x:| t D].} | d } t j!| ƒtjd | ƒqÌW|rt"|ƒndS( Ns¼ÓÔØÊý¾ÝδÍê³É£¬²»´æ´¢±¸µµi<s ±¸µµÀäÈ´ÖÐ!sS%ss·þÎñÆ÷±¸µµ: %ss
%s_%s_%s%ssBak:%s, len=%s, %stServerDataBackupErrorscompress len=%stwbiÿÿÿÿsɾ³ý¶àÓ౸µµÎļþ: %s(#RRt g_loadDataOKRR.tintttimet g_lastRTBTimetBackupIntervalR+R,RRRR-texiststmakedirsR/R0tChangeTimeNumToStrtChConfigtTYPE_Time_Format_YmdHMSRt GetSavePyDataRR5tCompresst SendGameErrorR2twriteR4R)t BackupCopyMaxtremoveR(tsaveToDBRR8R9R:R't
bakTiemStrR=R@R?tfpR!R&tfilePath((sdD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\DB\DBDataMgr.pyRssR          
    %            
  cCsVtjƒjƒ}d|}tjjt|ƒ}tjd|ƒtj    |t
ƒdS(NsS%ss Çå¿Õ±¸µµ: %s( RR+R,RRRR-R.R5t    DelFolderR(R8R9R:((sdD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\DB\DBDataMgr.pytClearBackupFile§s 
cCs0tjdƒtjƒjƒ}t|dƒdS(NsûÓб¸µµÊý¾Ý£¬Ö±½Ó´Ódb¼ÓÔØÊý¾Ý!i(RR.t PyMongoMaint GetUserCtrlDBtreadGameWorldDataR7(t
serverData((sdD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\DB\DBDataMgr.pyR²s  tcCs)|stƒ}ntjƒj|ƒdS(N(RMRYRZtsaveGameWorldData(R@((sdD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\DB\DBDataMgr.pyR¹s cCs<tƒ}|jƒ}tjdt|ƒt|ƒfƒ|S(NsGetSavePyData!! id = %s-%s(t GetDBDataMgrt GetSaveDataRR.tidR(t pyGameDataMgrtresult((sdD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\DB\DBDataMgr.pyRMÀs     #cCsKtƒ}tjdt|ƒt|ƒfƒ|j||ƒ}tt_|S(NsLoadPyGameData!!id = %s %s(    R_RR.RaRt LoadGameDataRRRC(t
gameBuffertposRb((sdD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\DB\DBDataMgr.pyR7Ês
    #    tPyGameDataManagercBs#eZd„Zd„Zd„ZRS(cCs^tjƒ|_tjƒ|_tjƒ|_tjƒ|_tj    ƒ|_    t
j ƒ|_ dS(N( t DBEventTrigt EventTrigMgrtDBPlayerViewCachetPlayerViewCacheMgrR t BillboardMgrtDBMailtMailMgrR    t    FamilyMgrt    DBGameRect
GameRecMgr(tself((sdD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\DB\DBDataMgr.pyt__init__ØscCs|d}||jjƒ7}||jjƒ7}||jjƒ7}||jjƒ7}||jjƒ7}||jjƒ7}|S(NR](RiR`RkRlRnRoRq(Rrtbuff((sdD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\DB\DBDataMgr.pyR`áscCs t|ƒ}|jj|||ƒ}|jj|||ƒ}|jj|||ƒ}|jj|||ƒ}|jj|||ƒ}|jj|||ƒ}|S(N(RRiR7RkRlRnRoRq(RrReRftdataslen((sdD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\DB\DBDataMgr.pyRdës (t__name__t
__module__RsR`Rd(((sdD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\DB\DBDataMgr.pyRg×s            
cCs(tj}|s$tƒ}|t_n|S(N(Rtg_pyGameDataManagerRg(Rb((sdD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\DB\DBDataMgr.pyR_õs
         cCstƒ}|jS(N(R_Ri(t    dbDataMgr((sdD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\DB\DBDataMgr.pytGetEventTrigMgrýs    cCstƒ}|jS(N(R_Rk(Ry((sdD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\DB\DBDataMgr.pytGetPlayerViewCacheMgrs    cCstƒ}|jS(N(R_Ro(Ry((sdD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\DB\DBDataMgr.pyt GetFamilyMgrs    cCs tƒjƒS(N(R|tGetFamilyActionMgr(((sdD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\DB\DBDataMgr.pyR} scCstƒ}|jS(N(R_Rn(Ry((sdD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\DB\DBDataMgr.pyt
GetMailMgrs    cCstƒ}|jS(N(R_Rl(Ry((sdD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\DB\DBDataMgr.pytGetBillboardMgrs    cCstƒ}|jS(N(R_Rq(Ry((sdD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\DB\DBDataMgr.pyt GetGameRecMgrs    ((R5R/RKRRRYRjRhR RpR    RmRERR-RRQRGRRR
R)RRRRXRRRMR7tobjectRgR_RzR{R|R}R~RR€(((sdD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\DB\DBDataMgr.pyt<module>sJ                                  ! 4