国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

可不可以將數(shù)據(jù)庫讀取的用戶所有數(shù)據(jù)都保存在$_SESSION里?

daohu

上周問了一個關于global疑似失效的問題
http://wenda.workerman.net/?/question/2112

我游戲里的操作是,玩家登錄后從數(shù)據(jù)庫讀取用戶信息,然后global &user,&bag.........
然后通信需要改變數(shù)值的時候先global &user,&bag,再比對值,比對正確就改變,不對則報作弊
實際情況是經(jīng)常無緣無故報作弊。讓我以為是再調用這個global &user,&bag的時候數(shù)據(jù)失效了,鉆入了進程間不共享的情況。

后來測出來結果出乎我的意料,我本以為client_id和global一一對應,結果造成錯誤的原因是,這個global是在內存中共享的,也就是所有玩家登陸后都要用這個global &user,&bag里的值,這必然造成數(shù)據(jù)比對錯誤...

現(xiàn)在問題找到,我想用戶的數(shù)據(jù)庫數(shù)據(jù)只給自己用,不和其他玩家有互換。想到$_SESSION是和client_id對應的。所以理論上應該可以每次數(shù)據(jù)庫獲取&user,&bag....等等后,
先$_SESSION=&user;
$_SESSION=&bag;
......
每次用的時候再&user=$_SESSION;
&bag=$_SESSION;
用完再存,看起來可以這么實現(xiàn)。但是對于用戶數(shù)據(jù)特別多的情況,會不會引發(fā)性能的問題,因為手冊里說每次通信都會攜帶這個$_SESSION,并且這么存保險的保險,還請大神抽空解答一下。

另外,數(shù)據(jù)庫的實例&db是否也可以這樣放進去$_SESSION=&db; 謝謝!

3412 3 0
3個回答

daohu

現(xiàn)在迷茫了,同樣的代碼沒動,有時候global全用戶共享,有時候和client_id一一對應。希望大神可以指點一下疑惑

  • 暫無評論
tianhuo1990

我自己的理解是,global對該進程全體共享。
但是多個進程之間的global不同享

  • daohu 2017-08-14

    謝謝,目前來看是這樣的,所以我嘗試把單個用戶的數(shù)據(jù)在登錄完后全部放到$_SESSION里,然后把$_SESSION當臨時數(shù)據(jù)庫去比對通信的值,不知這樣有沒有問題

  • tianhuo1990 2017-08-14

    我也曾經(jīng)遇到過你這個問題,我現(xiàn)在解決辦法就是連接上了就把$client_id寫入到用戶表里面,然后斷線的話就把這個字段清空
    當然你可以把一些數(shù)據(jù)讀取出來放在session減少io

lalala

用GlobalData,多進程之間共享數(shù)據(jù)
http://doc.workerman.net/315189

  • daohu 2017-08-16

    謝謝,我不需要進程間共享,我只需要用戶的數(shù)據(jù)可以存在內存里隨時給自己用二不需要一直讀取數(shù)據(jù)庫,用$_SESSION感覺更方便嘛,就是不知會不會產(chǎn)生其他問題

年代過于久遠,無法發(fā)表回答
??