我們都知道php有自己的一個默認session機制,就是你不設置任何session.handler的時候,它會用在臨時目錄下面存儲文件名類似sess_5pjm50b8d40p4175iousv4hqd3的一堆session文件,但是session是有過期時間的,而這些文件顯然不能無限增多,那么當session過期以后這些文件會被回收嗎?是通過什么機制回收的呢?顯然php本身干不了這個事情,因為它的生命周期在腳本執行完就結束了,沒有長駐內存的程序來回收這些文件,難道就放任不管嗎?
2 回答

陪伴而非守候
TA貢獻1757條經驗 獲得超8個贊
session.gcprobability = 1
session.gcdivisor = 100
session.gc_maxlifetime = 1440
這三個配置組合構建服務端session的垃圾回收機制
session.gc_probability與session.gc_divisor構成執行session清理的概率,理論上的解釋為服務端定期有一定的概率調用gc函數來對session進行清理,清理的概率為:
gc_probability/gc_divisor 比如:1/100 表示每一個新會話初始化時,有1%的概率會啟動垃圾回收程序,清理的標準為session.gc_maxlifetime定義的時間。

ibeautiful
TA貢獻1993條經驗 獲得超6個贊
在php.ini中可以看到以下配置行
; Define the probability that the 'garbage collection' process is started; on every session initialization.; The probability is calculated by using gc_probability/gc_divisor,; e.g. 1/100 means there is a 1% chance that the GC process starts; on each request.session.gc_probability = 1session.gc_divisor = 100; After this number of seconds, stored data will be seen as 'garbage' and; cleaned up by the garbage collection process.session.gc_maxlifetime = 1440
從注釋可以看出是session垃圾回收的配置。 session.gc_probability/session.gc_divisor 表述有1%的概率回收大于session.gc_maxlifetime時間的過期文件。
- 2 回答
- 0 關注
- 132 瀏覽
添加回答
舉報
0/150
提交
取消