session的垃圾回收機制


session.gc_maxlifetime

session.gc_probability  

session.gc_divisor 

session.gc_divisor 與 session.gc_probability 合起來定義了在每個會話初始化時啟動 gc(garbage collection 垃圾回收)進程的概率。此概率用 gc_probability/gc_divisor 計算得來。例如 1/100 意味着在每個請求中有 1% 的概率啟動 gc 進程。session.gc_divisor 默認為 100。

比如:session.gc_maxlifetime=30,session.gc_divisor=1000,session.gc_probability=1,就表示每一千個用戶調用session_start()的時候,就百分百的會執行一次垃圾回收機制,將磁盤上沒用的session文件刪除。

注意:一般對於一些大型的門戶網站,建議將session.gc_divisor調大一點,減少開銷

接下來,我通過一個例子演示下,如何配置才能讓調用gc(垃圾回收)進程呢!

通過配置php.ini文件,修改以下幾個信息:

  1. session.gc_maxlifetime = 60//當session文件在60s后還沒有被訪問的話,則該session文件將會被視為“垃圾文件”,並且等待gc(垃圾回收)進程的調用的時候被清理掉
  2. session.gc_probability = 1000

因為gc進程被調用的概率是通過gc_probability/gc_divisor 計算得來的,這里我將session.gc_probability改成1000,而session.gc_divisor 默認情況下也是1000。則gc進程在每次執行session_start()函數的時候都會被調用到。

以下我通過截圖簡單的說明下:

我開啟三個會話,則創建三個對應的session文件,當每個文件在30秒內都沒被調用的話,就會被當成是“垃圾文件”,等到gc進程調用的時候,“垃圾文件”就會被unlink,因為之前我已經通過修改php.ini配置文件,將gc被調用的概率改成百分百,所以接下來,如果我重新使用任何一個瀏覽器刷新下頁面的時候,三個session文件,應該只剩下一個了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM