PHP實現多伺服器SESSION共享

2021-08-21 19:43:20 字數 984 閱讀 3840

現在稍微大一點的**基本上都有好幾個子網域名稱,比如www.feiniu.com, search.feiniu.com, member.feiniu.com,這些**如果需要共用使用者登入資訊,那麼就需要做到session共享,當然前提是有相同的主域。

客戶端訪問php頁面,執行session_start,生成session_id,一般我們是把session_id儲存到cookie上,session內容儲存在服務端,客戶端訪問訪問不同的頁面都會把session_id傳到服務端,通過session_id來獲取session內容。

流程是這樣,可是不同的伺服器會對同乙個客戶端產生不同的session_id,這樣的話不同伺服器就不能得到相同的session內容了。而且php 預設的 session 資料都是分別儲存在本伺服器的檔案系統中。

所以我們要解決session共享,就必須解決兩個問題

1. 多台伺服器用同乙個session_id

這個比較容易解決,只要在php中設定存session_id的cookie網域名稱為**主域就可以了

開啟php.ini, 設定session.cookie_domain = .feiniu.com,

當然也可以在php**當中設定ini_set("session.cookie_domain","feiniu.com");

2. 多台伺服器用同乙個session_id訪問到相同的session內容

要實現這點,就必須把session內容儲存到讓所有伺服器都能訪問到的地方,php的session內容是預設儲存到本伺服器的檔案中的,一般的解決方案是存入資料庫,memcache或者redis這種快取伺服器,當然用預設的檔案儲存方式也可以,用nfs統一儲存。
3. 如何選擇儲存引擎

redis儲存:與memcache相比,redis訪問稍稍慢一點點,好處是: 

PHP實現多伺服器SESSION共享

現在稍微大一點的 基本上都有好幾個子網域名稱,比如www.feiniu.com,search.feiniu.com,member.feiniu.com,這些 如果需要共用使用者登入資訊,那麼就需要做到session共享,當然前提是有相同的主域。客戶端訪問php頁面,執行session start,生...

PHP實現多伺服器SESSION共享

現在稍微大一點的 基本上都有好幾個子網域名稱,比如www.feiniu.com,search.feiniu.com,member.feiniu.com,這些 如果需要共用使用者登入資訊,那麼就需要做到session共享,當然前提是有相同的主域。客戶端訪問php頁面,執行session start,生...

php 多伺服器,伺服器裝多個版本的 PHP

因為我早就公升級到 php7 了,但是最近又有之前09年的程式需要挪夠來跑,發現很多函式都刪了,根本不支援,所以我得重新裝個 php5 所以有了下面的筆記哈。就不做注釋了。自己分析下。wget c progress bar force tar zxf php 5.3.29.tar.gz cd php...