swoole中可以使用Server->bind取得uid,Server->bind將連線綁定一個使用者定義的UID,可以設定dispatch_mode=5設定以此值進行hash固定分配。可以保證某一個UID的連線全部會被分配到同一個Worker進程。
function Server->bind(int $fd, int $uid);
$fd:連接的ID
$uid:要綁定的UID,必須為非0的數字
未綁定UID時預設使用fd取模進行分配
同一個連接只能被bind一次,如果已經綁定了UID,再次呼叫bind會回傳false
可以使用$serv->getClientInfo($fd) 查看連接所綁定UID的值
僅在設定dispatch_mode=5時有效
在預設的dispatch_mode=2設定下,Server會依照socket fd來指派連線資料到不同的Worker進程。因為fd是不穩定的,一個客戶端斷開後重新連接,fd會改變。
這樣這個客戶端的資料就會被分配到別的Worker。使用bind之後就可以依照使用者定義的UID進行分配。即使斷線重連,相同UID的TCP連線資料會被指派相同的Worker進程。
推薦學習: swoole影片教學
#以上是swoole如何取得uid的詳細內容。更多資訊請關注PHP中文網其他相關文章!