php session 到期時間問題

來源:互聯網
上載者:User
session.gc_maxlifetime 設定的話,機率是 gc_probability/gc_divisor;不明白為什麼要這個規定;這個不明白原理

發現 session 會監視使用者是否活動,然後會自動更新 session 檔案的最後修改時間。

所以寫了一個 function 讀取 session 檔案的最後修改時間,然後跟現在時間對比,如果大於設定的到期時間,假設是 10 分鐘。就清空對應 session 的資訊。這樣可以嗎?

有沒有更好的方法?

ps:我是指不活動情況下到期時間

ps:我的問題沒有考慮到為每個session的值設獨立到期時間問題;

回複內容:

session.gc_maxlifetime 設定的話,機率是 gc_probability/gc_divisor;不明白為什麼要這個規定;這個不明白原理

發現 session 會監視使用者是否活動,然後會自動更新 session 檔案的最後修改時間。

所以寫了一個 function 讀取 session 檔案的最後修改時間,然後跟現在時間對比,如果大於設定的到期時間,假設是 10 分鐘。就清空對應 session 的資訊。這樣可以嗎?

有沒有更好的方法?

ps:我是指不活動情況下到期時間

ps:我的問題沒有考慮到為每個session的值設獨立到期時間問題;

推薦你看看 @Laruence 大神的文章 如何設定一個嚴格30分鐘到期的Session

再附另一篇文章: 深入理解PHP原理之Session Gc的一個小機率Notice

PHP中SESSION到期,指的是,超過多少時間不活動,則到期。如果使用者有活動,每次活動時session都會重新write一次。即你說的會自動更新最後的修改時間。比如,session設定20分鐘到期,使用者每分鐘重新整理一次,連續重新整理60次,那麼一個小時他還是線上的。因為他沒有超過20分鐘未活動。

看你的說法,你想指定讓一個人在指定的時間內到期?即無論他是否活動?到達20分鐘即退出?如果是這樣,你設定session.cookie_maxlife = 1200 即可。因為session的session_id傳遞是使用cookie傳遞的,這樣設定後,session_id在cookie中存活20分鐘後到期,再重新整理時,伺服器會重新分配一個session_id,他就掉線了。

PS. 這其實也是一個PHP網站中常見的,不願見的,使用者會莫名掉線的問題分析。

設定session handle為memcache或者redis之類,即session的儲存介質為nosql資料庫,然後在此類介質中儲存session值,設定嚴格的到期時間,這個是最精確的

跟問題沒關係。自己封裝的session,不用php內建的。莫踩。。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.