session的垃圾回收機制

session.gc_maxlifetimephp

session.gc_probability  瀏覽器

session.gc_divisor session

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調大一點,減小開銷blog

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

經過配置php.ini文件,修改如下幾個信息:ci

  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()函數的時候都會被調用到。it

如下我經過截圖簡單的說明下:io

我開啓三個會話,則建立三個對應的session文件,當每一個文件在30秒內都沒被調用的話,就會被當成是「垃圾文件」,等到gc進程調用的時候,「垃圾文件」就會被unlink,由於以前我已經經過修改php.ini配置文件,將gc被調用的機率改爲百分百,因此接下來,若是我從新使用任何一個瀏覽器刷新下頁面的時候,三個session文件,應該只剩下一個了

相關文章
相關標籤/搜索