PHP自帶的SESSION會話機制是這樣的:
PHP-FPM根據瀏覽器傳來的一個名為PHPSESSID的HTTP cookie確定要訪問的會話檔案,然後填充超全域性變數$_SESSION.
WebSocket建立連線時,也可以拿到這個HTTP cookie(注意跨域問題:AJAX跨域區分域名和埠,COOKIE區分域名但不區分埠),同理你可以根據這個PHPSESSID讀取伺服器上的會話檔案,unserialize反序列化就能拿到會話陣列,如果你要寫入會話,記得先用 flock($fp, LOCK_EX) 排它鎖鎖定後再寫入,只是讀的話就不需要了.
但個人不建議使用PHP自帶的SESSION會話機制,除非你的應用定位就是單臺伺服器.否則還是建議使用cookie驗證身份(解密cookie,根據id比對salt),Redis儲存使用者資料:
user:10001:name => "tux"
user:10001:age => 27
這樣不同語言都可以訪問到這些資料,而且可以把程式部署到其他伺服器也沒有問題.
PHP自帶的SESSION會話機制是這樣的:
PHP-FPM根據瀏覽器傳來的一個名為PHPSESSID的HTTP cookie確定要訪問的會話檔案,然後填充超全域性變數$_SESSION.
WebSocket建立連線時,也可以拿到這個HTTP cookie(注意跨域問題:AJAX跨域區分域名和埠,COOKIE區分域名但不區分埠),同理你可以根據這個PHPSESSID讀取伺服器上的會話檔案,unserialize反序列化就能拿到會話陣列,如果你要寫入會話,記得先用 flock($fp, LOCK_EX) 排它鎖鎖定後再寫入,只是讀的話就不需要了.
但個人不建議使用PHP自帶的SESSION會話機制,除非你的應用定位就是單臺伺服器.否則還是建議使用cookie驗證身份(解密cookie,根據id比對salt),Redis儲存使用者資料:
user:10001:name => "tux"
user:10001:age => 27
這樣不同語言都可以訪問到這些資料,而且可以把程式部署到其他伺服器也沒有問題.