一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - PHP教程 - PHP中設置一個嚴格30分鐘過期Session面試題的4種答案

PHP中設置一個嚴格30分鐘過期Session面試題的4種答案

2020-07-02 14:55PHP教程網 PHP教程

這篇文章主要介紹了PHP中設置一個嚴格30分鐘過期Session面試題的4種答案,需要的朋友可以參考下

今天在我的微博上發出一個問題:

我在面試的時候, 經常會問一個問題: “如何設置一個30分鐘過期的Session?”, 大家不要覺得看似簡單, 這里面包含的知識挺多, 特別適合考察基本功是否扎實, 誰來回答試試? 呵呵

為什么問這個問題呢?

1.我在stackoverflow上看到了有人討論這個問題
2.想起來我經常問這個問題, 所以~~

在這里, 我來解答下這個題目.

第一種回答

那么, 最常見的一種回答是: 設置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. 每次訪問之前, 判斷時間戳.

最后, 有同學問, 為什么要設置30分鐘的過期時間: 這個, 首先這是為了面試, 第二, 實際使用場景的話, 比如30分鐘就過期的優惠劵?

thanks :)

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 香蕉久久一区二区三区 | 欧美国产在线观看 | brazzersxxx欧美| 国产精品污双胞胎在线观看 | 国产一区二区三区毛片 | 啊哈~嗯哼~用力cao我小说 | 91极品在线观看 | fc2免费人成在线 | 美女脱了内裤打开腿让人桶网站o | 草逼视频免费看 | 我把校花黑色蕾丝胸罩脱了 | 亚洲精品www久久久久久久软件 | 精品国产自在在线在线观看 | 波多野结衣女老师 | 国产精品久久久久久久久久久搜索 | 超碰av| 欧美高清无砖专区欧美精品 | 单身男女韩剧在线看 | 二区三区在线观看 | 成人私人影院在线观看网址 | 国产私拍精品88福利视频 | 色帝国亚洲欧美在线蜜汁tv | 国产香蕉视频在线观看 | 国产在线精品亚洲第一区香蕉 | 亚洲成人免费观看 | 熟睡迷j系列小说 | 视频一区在线观看 | 三级视频中文字幕 | 欧美成人免费观看bbb | 免费一区二区视频 | brazzers欧美教师 | 成年人免费在线看 | 777午夜精品免费播放 | 国产一区二区视频在线观看 | haodiaocao几万部精彩视频 | 丝瓜茄子绿巨人秋葵榴莲污 | 亚洲热在线观看 | 日韩一级片免费观看 | sao虎在线精品永久 s0e一923春菜花在线播放 | 亚洲福利一区二区精品秒拍 | 欧美日韩精品一区二区三区视频 |