swoole如何獲取uid

swoole如何獲取uid

swoole中可以使用Server->bind獲取uid,Server->bind將連接綁定一個(gè)用戶定義的UID,可以設(shè)置dispatch_mode=5設(shè)置以此值進(jìn)行hash固定分配。可以保證某一個(gè)UID的連接全部會(huì)分配到同一個(gè)Worker進(jìn)程。

function?Server->bind(int?$fd,?int?$uid);

$fd:連接的ID

$uid:要綁定的UID,必須為非0的數(shù)字

未綁定UID時(shí)默認(rèn)使用fd取模進(jìn)行分配

同一個(gè)連接只能被bind一次,如果已經(jīng)綁定了UID,再次調(diào)用bind會(huì)返回false可以使用$serv->getClientInfo($fd)?查看連接所綁定UID的值僅在設(shè)置dispatch_mode=5時(shí)有效

在默認(rèn)的dispatch_mode=2設(shè)置下,Server會(huì)按照socket fd來(lái)分配連接數(shù)據(jù)到不同的Worker進(jìn)程。因?yàn)閒d是不穩(wěn)定的,一個(gè)客戶端斷開(kāi)后重新連接,fd會(huì)發(fā)生改變。

這樣這個(gè)客戶端的數(shù)據(jù)就會(huì)被分配到別的Worker。使用bind之后就可以按照用戶定義的UID進(jìn)行分配。即使斷線重連,相同UID的TCP連接數(shù)據(jù)會(huì)被分配相同的Worker進(jìn)程。

推薦學(xué)習(xí):?swoole視頻教程

以上就是

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊6 分享