這篇文章介紹的內容是關於PHP實現多伺服器SESSION共享,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下
PHP實現多伺服器SESSION共享
為什麼要session共享
現在稍微大一點的網站基本上都有好幾個子域名,例如www.feiniu.com, search.feiniu.com, member.feiniu.com,這些網站如果需要共用使用者登入訊息,那麼就需要做到session共享,當然前提是有相同的主網域。
PHP的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");
1
2
#3
- ##4
2. 多台伺服器用同一個session_id存取到相同的session內容
要实现这点,就必须把session内容存储到让所有服务器都能访问到的地方,php的session内容是默认存储到本服务器的文件中的,一般的解决方案是存入数据库,memcache或者redis这种缓存服务器,当然用默认的文件存储方式也可以,用NFS统一存储。 如何修改session存储引擎,参考这篇文章:http://blog.csdn.net/yagas/article/details/7593415
- 1
- 2
- 3
- #4
3. 如何選擇儲存引擎
- 預設檔案儲存:這種方式的session銷毀依託於php垃圾收集器,在高並發或銷毀時間較長的情況下,在SESSION目錄下產生大量文件,當然可以設定分級目錄進行SESSION 文件的保存。這會導致兩個問題:第一、查找檔案慢;第二,每個目錄下可容納的檔案數是有限的,可能會導致新SESSION儲存失敗。
- 資料庫儲存:把Session儲存在資料庫裡可以防止Session資料被垃圾收集器刪除,可以固化儲存session資料。但是用資料庫來同步session,會加大資料庫的IO,增加資料庫的負擔。而且資料庫讀寫速度較慢,不利於session的適時同步。
- memcache儲存:
- #以這種方式來同步session,不會增加資料庫的負擔,並且安全性比較高,把session放到記憶體裡面,比從檔案中讀取快很多。
- 但是memcache把記憶體分成很多種規格的儲存區塊,有塊就有大小,這種方式也就決定了,memcache不能完全利用內存,會產生記憶體碎片,如果儲存區塊不足,也會產生記憶體溢位
那些不需要「分佈」的,不需要共享的,或者乾脆規模小到只有一台伺服器的應用,memcached不會帶來任何好處,相反還會拖慢系統效率,因為網路連線同樣需要資源。
redis儲存:與memcache相比,redis存取稍微慢一點,好處是:
redis支援的資料結構較多,可以儲存數組或對象,而memcache只能儲存字串
在session機器重啟的情況下,memcache所有使用者都必須重新取得session ,而redis不會
在突然湧來大量用戶產生了很多數據把存儲session 的機器內存佔滿了的情況下,memcache 會罷工,所有key 都沒過期的話就不停的覆蓋最後寫入的數據,而redis 只是會變慢,不會影響程式的邏輯
相關推薦:
#以上是PHP實作多伺服器SESSION共享的詳細內容。更多資訊請關注PHP中文網其他相關文章!

PHP主要是過程式編程,但也支持面向對象編程(OOP);Python支持多種範式,包括OOP、函數式和過程式編程。 PHP適合web開發,Python適用於多種應用,如數據分析和機器學習。

PHP起源於1994年,由RasmusLerdorf開發,最初用於跟踪網站訪問者,逐漸演變為服務器端腳本語言,廣泛應用於網頁開發。 Python由GuidovanRossum於1980年代末開發,1991年首次發布,強調代碼可讀性和簡潔性,適用於科學計算、數據分析等領域。

PHP適合網頁開發和快速原型開發,Python適用於數據科學和機器學習。 1.PHP用於動態網頁開發,語法簡單,適合快速開發。 2.Python語法簡潔,適用於多領域,庫生態系統強大。

PHP在現代化進程中仍然重要,因為它支持大量網站和應用,並通過框架適應開發需求。 1.PHP7提升了性能並引入了新功能。 2.現代框架如Laravel、Symfony和CodeIgniter簡化開發,提高代碼質量。 3.性能優化和最佳實踐進一步提升應用效率。

PHPhassignificantlyimpactedwebdevelopmentandextendsbeyondit.1)ItpowersmajorplatformslikeWordPressandexcelsindatabaseinteractions.2)PHP'sadaptabilityallowsittoscaleforlargeapplicationsusingframeworkslikeLaravel.3)Beyondweb,PHPisusedincommand-linescrip

PHP類型提示提升代碼質量和可讀性。 1)標量類型提示:自PHP7.0起,允許在函數參數中指定基本數據類型,如int、float等。 2)返回類型提示:確保函數返回值類型的一致性。 3)聯合類型提示:自PHP8.0起,允許在函數參數或返回值中指定多個類型。 4)可空類型提示:允許包含null值,處理可能返回空值的函數。

PHP中使用clone關鍵字創建對象副本,並通過\_\_clone魔法方法定制克隆行為。 1.使用clone關鍵字進行淺拷貝,克隆對象的屬性但不克隆對象屬性內的對象。 2.通過\_\_clone方法可以深拷貝嵌套對象,避免淺拷貝問題。 3.注意避免克隆中的循環引用和性能問題,優化克隆操作以提高效率。

PHP適用於Web開發和內容管理系統,Python適合數據科學、機器學習和自動化腳本。 1.PHP在構建快速、可擴展的網站和應用程序方面表現出色,常用於WordPress等CMS。 2.Python在數據科學和機器學習領域表現卓越,擁有豐富的庫如NumPy和TensorFlow。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

記事本++7.3.1
好用且免費的程式碼編輯器

WebStorm Mac版
好用的JavaScript開發工具

Dreamweaver Mac版
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)