PHP簡單實現HTTP和HTTPS跨域共享session解決辦法?
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
這樣不同語言都可以訪問到這些數據,而且可以把程序部署到其他服務器也沒有問題.