簡體   English   中英

PHP會話處理有限制嗎?

[英]Are there limitations in PHP session handling?

我已經看到很多網站放棄使用PHP中的會話默認處理方法,我仍然不知道為什么。

他們肯定在運行PHP,對我來說,人們會設計自己的方法似乎毫無意義。 是否存在某些我不知道的限制,或者純粹是因為他們控制了一切?

(我試過詢問他們,是的,他們或者沒有辦法聯系他們,或者他們“在某個地方看到某些東西反對使用PHP會話”而不知道它實際上是什么)

默認會話存儲在硬盤驅動器上,通常位於/ tmp目錄中。 當您的網站變大時,1台計算機不足以運行它。 因此,人們訴諸負載平衡(以及其他解決方案)。

負載均衡器可在一組計算機之間有效切換。 因此,如果您在第一次請求時通過計算機#1服務,然后在第二次請求時通過計算機#2服務 - 第二台計算機無法讀取會話,因為它不在其/ tmp文件夾中。

這是一個簡化的場景,因為應用程序擴展還有很多,但這是人們訴諸於覆蓋默認會話機制的原因之一。

另一件感興趣的事情是在數據庫中存儲會話,從而使它們可以搜索,而不是。 您還可以創建一個有效強制記錄人員的界面,這是默認機制無法提供的。

我認為滾動自己的會話處理功能的主要原因是為了測試目的。 如果您正在運行單元測試,則不一定會有瀏覽器環境。 您將無法設置cookie,因此PHP不會為您設置$_SESSION變量。

但是,如果您編寫了自己的會話處理類,則可以創建一個用於運行單元測試的模擬類。 該對象的行為就像一個“真實”的會話,但你不必對瀏覽器,cookie和人類充滿信心。

使用標准設置,您可以使用文件系統,保存未加密的會話數據等。

使用session_set_save_handler編寫自己的會話處理,您可以根據需要調整sesssion管理...應用加密,在數據庫中保存會話,使會話與單獨的軟件系統同步......

1)會話仍然被廣泛使用。 他們工作和工作,所以除非特殊情況,否則沒有必要改變它。

2)但是,Session很弱,它依賴於一個PHP(可以被盜)。 但是,可以使用cookie + ip + expiration等不同方法保護會話。

所以是的,不是。 會話仍然被廣泛使用,但需要微調。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM