国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Session過期策略研究

Zachary / 1271人閱讀

摘要:走出誤區,我們來討論一下真正的過期策略吧。前面說了,數據是否過期只與服務器有關,此處在修改的過期策略配置三條紅線分別影響著的過期策略刪除幾率的分子刪除幾率的分母分鐘刪除一次一次終上所述默認的過期機制為分鐘刪除一次,每個會話被刪除的幾率為。

首先說一點新手認識中常見的誤區:關閉瀏覽器session就過期了。這種說話是完全錯誤的,

session是否過期與客戶端如何操作沒什么必然關系,他只與服務器如何設置有關。

以下觀點以以PHP語言舉例,使用的是chrome瀏覽器[48.0.2564.116 (正式版本) m (32 位)](△注意這點,因為Firefox瀏覽器關閉后PHPSESSID會強行緩存,測試會導致不準)
2016年10月21日新增:
edge關閉后PHPSESSID悔刷新
但chrome與firfox都不會了。
猜測后兩個瀏覽器不會是為了用戶體驗考慮。

每個用戶訪問網站,服務器會自動賦予用戶一個session_id值,此時服務器與客戶端(此處為瀏覽器)同時擁有著一份相同值的session_id值。

往后的所有包含SESSION數據增加,修改,刪除,過期一切都是以session_id值,為基礎,session_id值,就是像一把鑰匙,溝通客戶端與服務器端之間關于SESSION的一切操作。

那”關閉瀏覽器session就過期了”這種網上普遍流傳的觀點是如何出現的呢?

首先說明的是,如果服務器代碼不進行特殊操作,展示出來的效果確實是”關閉瀏覽器session就過期了”,譬如有些網站關閉瀏覽器再打開就要重新登錄,但是這不代表session過期了,session_id值依舊存在于服務端,session_id所指向的值是依舊存在的,以下代碼可以很好的證明這一點,我關閉了瀏覽器甚至切換了瀏覽器,b.php永遠都會打印出那個數據。

a.php:


b.php:

只要在session_start()前給session_id賦上一個初始值,那么當前會話就會以那個session_id值作為鑰匙,去像服務器要數據。

所以在此處,b.php的session_id永遠是”5op1k5moghb1hprgkifgh7nv71“,那么只要服務器的session_id值不過期,這段數據永遠可以獲得得到。

一次session_start就是一次新的會話,如果沒有經過特意賦值,那么將會產生一個新的session_id,新的session_id和原來的”5op1k5moghb1hprgkifgh7nv71“對不上,客戶端自然獲取不到對應的session數據啦,那么就會出現”關閉瀏覽器session就消失這個誤區”。

走出誤區,我們來討論一下session真正的過期策略吧。前面說了,session數據是否過期只與服務器有關,此處在php.ini修改session的過期策略配置:

三條紅線分別影響著session的過期策略

Session.gc_probability = 1 //session刪除幾率的分子

Session.gc_divisor=1000 //session刪除幾率的分母

Session.gc_maxlifetime=1440 //24分鐘刪除一次一次

終上所述:默認的session過期機制為 24分鐘刪除一次,每個session_id會話被刪除的幾率為1/1000。

我們可以手動將三行配置都改成1,進行測試,那么我們會發現即使不關閉瀏覽器session值也是會過期的。(session值默認要刷新一遍才過期,所以即便都設置成1也要手動刷新一遍,這和session本身的機制有關)

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/21487.html

相關文章

  • 簽發的用戶認證token超時刷新策略

    摘要:簽發的用戶認證超時刷新策略這個模塊分離至項目權限管理系統與前后端分離實踐,感覺那樣太長了找不到重點,分離出來要好點。這樣在有效期過后的時間段內可以申請刷新。 簽發的用戶認證token超時刷新策略 這個模塊分離至項目api權限管理系統與前后端分離實踐,感覺那樣太長了找不到重點,分離出來要好點。 對于登錄的用戶簽發其對應的jwt,我們在jwt設置他的固定有效期時間,在有效期內用戶攜帶jw...

    e10101 評論0 收藏0
  • java | Spring Boot 與 Redis 實現 Cache 以及 Session 共享

    摘要:完成狀態編寫中已完成維護中原文是一個使用編寫的開源支持網絡基于內存可選持久性的鍵值對存儲數據庫維基百科是目前業界使用廣泛的基于內存的數據庫。 完成狀態 [ ] 編寫中 [ ] 已完成 [x] 維護中 原文 Redis Redis是一個使用ANSI C編寫的開源、支持網絡、基于內存、可選持久性的鍵值對存儲數據庫 ------ 維基百科 Redis 是目前業界使用廣泛的基于內存的...

    ssshooter 評論0 收藏0

發表評論

0條評論

Zachary

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<