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

UDP模式,workerman自動擁有session_id唯一標識?

zzccomet

問題是這樣的。
連接形式UDP
$http_worker = new Worker("udp://0.0.0.0:8282");
我在onmessage里做了一個
$_SESSION=$maxadd+1;
?
也就是,只要接收數據就+1.
客戶端,我用PHP寫的,在服務器上http://localhost/index.php
$socket = socket_create(AF_INET,SOCK_DGRAM,SOL_UDP);
socket_connect($socket,'127.0.0.1',8282);
socket_write($socket,1,1);
?
然后,我用不同的瀏覽器訪問這個http://localhost/index.php
發(fā)現(xiàn),session的maxadd都在其他瀏覽器的基礎上+1了?。。?!
?
難道wokerman的UDP模式下,不需要在session_start()之前設置session_id('name');? 不需要設置這個ID嗎?UDP自動是多客戶端共享session內存地址嗎?
也就是,其他客戶端如果修改了$_SESSION,那么其他客戶端都同步更新??

3432 2 0
2個回答

walkor 打賞

SESSION是基于http通訊協(xié)議實現(xiàn)的一種會話機制,一般在webserver才會實現(xiàn)它。
?
SESSION原理是在瀏覽器里記錄個sessionid的cookie,每次瀏覽器請求web服務的時候在http頭攜帶sessionid的cookie,服務器得到sessionid后在存儲(默認是磁盤)中找對應session的數據,找到后把數據解析成數組賦值給$_SESSION變量,這樣就能恢復這個請求之前的會話數據。會話結束后如果$_SESSION有變動就再存回磁盤,接著清理所有和本次請求有關的數據變量,包括$_SESSION變量,干干凈凈的等待處理下一個請求,下個請求又會去在http頭里找對應的sessionid,然后讀存儲恢復$_SESSION。
?
由此看SESSION是否工作取決于是否是http通訊,服務端和客戶端是否實現(xiàn)了SESSION機制。
?
你的是一個udp服務,根本沒有http通訊,也不是基于webserver的http服務,所以SESSION是沒有任何實現(xiàn)的。
拋開http協(xié)議和webserver,$_SESSION在php里就是一個全局變量,沒有其它作用。workerman是常駐內存程序,在非http協(xié)議里$_SESSION被賦值后可以隨時使用,也可以被多個客戶端共享使用。
?

  • 暫無評論
zzccomet

明白了。那完全可以用它實現(xiàn)共享數據。而且存儲臨時數據,應該沒有上限吧,哈哈。幾萬人,每個人幾KB的數據,甚至是圖片。性能應該比redis還好才對。@

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