簡體   English   中英

PHP $ _SESSION變量在服務器上的生命周期

[英]PHP $_SESSION variables lifetime on server

好的,所以我知道服務器上的默認時間會話變量為1440秒或24分鍾。 那么,如果變量只是作為垃圾消失,它們的目的是什么? 這是否意味着我的用戶每24分鍾注銷一次,因為會話變量正在更新? 對我來說,將session.gc_maxlifetime更改為2周,這樣用戶可以保持登錄狀態兩周,這是否明智? 這一切都令人困惑,因此,我將不勝感激!

您錯過了會議的重點。 會話通常會一直持續到用戶關閉瀏覽器為止(這是瀏覽器默認刪除會話cookie的點)。 將會話保持打開狀態2周意味着,如果用戶忘記注銷,則其他人可能會打開該頁面並登錄。

從上一次用戶與頁面的交互開始,該會話將持續24分鍾(或任何設置)。 如果您使用的是ajax,則ajax調用本身將擴展會話,因此在瀏覽器中打開頁面時不會注銷用戶。

“記住我”或“保持登錄狀態”功能完全不同,它通常會設置另一個帶有某些令牌的cookie(可能會在2周后過期),並自動登錄用戶並開始新的會話。 好了,您實際上可以將會話保留在數據庫中並恢復相同的會話。

請記住,會話依賴於用戶瀏覽器中的cookie,並且該cookie通常是短暫的。

顯然,它並沒有那么令人困惑,因為您是對的:會話在該時間(或用戶關閉瀏覽器)后過期,並且更改該設置將影響服務器上會話存儲的壽命。 當然,每次用戶訪問頁面時,時間都會重新設置為24分鍾。

但是,如果您確實想要長期存儲,請使用數據庫或cookie 您確實不應該為此使用會話,因為它們只是會話 (英語中的會話意味着一次訪問該站點,因此直到用戶關閉您的站點為止)。

您可以為會話變量設置超時時間,但這會為您的應用程序帶來不必要的問題。 如果您想設置超時,仍然:

要在會話上設置一分鍾的超時時間,您可以像上面這樣調用上述函數:

session_start_timeout(60);

暫無
暫無

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

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