項目基于workerman 的websocket協(xié)議?,F(xiàn)在想實現(xiàn)一套類似$_SESSION方式來處理用戶狀態(tài)什么的。對于session不算很了解。在workerman上實現(xiàn)session有什么注意點嗎? 謝謝。
workerman里面直接利用$connection對象存儲對應(yīng)鏈接的數(shù)據(jù)即可。
php的對象有個特性,可以動態(tài)給它賦值屬性,可以利用這點實現(xiàn)某個客戶端的數(shù)據(jù)存儲。
例如動態(tài)增加個session屬性來存儲session信息,就可以類似這樣
$worker->onMesssae = function($con, $data) {
// data={"type":"login", "user_id":"101", "name":"xxxx"}
$data = json_enocde($data, true);
// 沒設(shè)置過session屬性,則沒登錄
if (!isset($con->session)) {
// 給鏈接對象動態(tài)增加一個session屬性
$con->session = array('user_id'=>$data, 'name'=>$data);
}
...
如果是GatewayWorker,則直接可以用$_SESSION設(shè)置獲取當(dāng)前鏈接的session數(shù)據(jù)