中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何理解PHP中設置一個嚴格30分鐘過期Session的問題

發布時間:2021-09-29 13:48:49 來源:億速云 閱讀:136 作者:iii 欄目:開發技術

這篇文章主要講解了“如何理解PHP中設置一個嚴格30分鐘過期Session的問題”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“如何理解PHP中設置一個嚴格30分鐘過期Session的問題”吧!

第一種回答

那么, 最常見的一種回答是: 設置Session的過期時間, 也就是session.gc_maxlifetime, 這種回答是不正確的, 原因如下:

1. 首先, 這個PHP是用一定的概率來運行session的gc的, 也就是session.gc_probability和session.gc_divisor(介紹參看  PHP使用Session遇到的一個Permission denied Notice解決辦法), 這個默認的值分別是1和100, 也就是有1%的機會, PHP會在一個Session啟動時, 運行Session gc. 不能保證到30分鐘的時候一定會過期.

2. 那設置一個大概率的清理機會呢? 還是不妥, 為什么? 因為PHP使用stat Session文件的修改時間來判斷是否過期, 如果增大這個概率一來會降低性能, 二來, PHP使用”一個”文件來保存和一個會話相關的Session變量, 假設我5分鐘前設置了一個a=1的Session變量, 5分鐘后又設置了一個b=2的Seesion變量, 那么這個Session文件的修改時間為添加b時刻的時間, 那么a就不能在30分鐘的時候, 被清理了. 另外還有下面第三個原因.

3. PHP默認的(Linux為例), 是使用/tmp 作為Session的默認存儲目錄, 并且手冊中也有如下的描述:

Note: 如果不同的腳本具有不同的 session.gc_maxlifetime 數值但是共享了同一個地方存儲會話數據,則具有最小數值的腳本會清理數據。此情況下,與 session.save_path 一起使用本指令。

也就是說, 如果有倆個應用都沒有指定自己獨立的save_path, 一個設置了過期時間為2分鐘(假設為A), 一個設置為30分鐘(假設為B), 那么每次當A的Session gc運行的時候, 就會同時刪除屬于應用B的Session files.

所以, 第一種答案是不”完全嚴格”正確的.

第二種答案

還有一種常見的答案是: 設置Session ID的載體, Cookie的過期時間, 也就是session.cookie_lifetime. 這種回答也是不正確的, 原因如下:

這個過期只是Cookie過期, 換個說法這點就考察Cookie和Session的區別, Session過期是服務器過期, 而Cookie過期是客戶端(瀏覽器)來保證的, 即使你設置了Cookie過期, 這個只能保證標準瀏覽器到期的時候, 不會發送這個Cookie(包含著Session ID), 而如果通過構造請求, 還是可以使用這個Session ID的值.

第三種答案

使用memcache, redis等, okey, 這種答案是一種正確答案. 不過, 很顯然出題者肯定還會接著問你, 如果只是使用PHP呢?

第四種答案

當然, 面試不是為了難道你, 而是為了考察思考的周密性. 在這個過程中我會提示出這些陷阱, 所以一般來說, 符合題意的做法是:

1. 設置Cookie過期時間30分鐘, 并設置Session的lifetime也為30分鐘.

2. 自己為每一個Session值增加Time stamp.

3. 每次訪問之前, 判斷時間戳.

感謝各位的閱讀,以上就是“如何理解PHP中設置一個嚴格30分鐘過期Session的問題”的內容了,經過本文的學習后,相信大家對如何理解PHP中設置一個嚴格30分鐘過期Session的問題這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

将乐县| 齐齐哈尔市| 清流县| 民丰县| 江陵县| 伊春市| 香格里拉县| 宣武区| 观塘区| 永平县| 罗江县| 咸阳市| 雅安市| 梨树县| 饶河县| 扬中市| 汉源县| 宜宾县| 乡宁县| 双柏县| 冕宁县| 崇仁县| 容城县| 济南市| 汝南县| 惠安县| 桓仁| 收藏| 九江市| 昭苏县| 东兰县| 吐鲁番市| 左云县| 都匀市| 新乐市| 甘肃省| 台湾省| 龙里县| 永靖县| 临夏市| 林芝县|