前一阵写了一个简单的类,将session存入数据库,当session_destroy()时会将库中的session记录删除,而过了maxlifetime时session记录却还在,当时很不理解。
今天又看了下php.ini,找到了关于session的配置,明白了原因。
; 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 = 1
session.gc_divisor = 1000
以上是默认配置,也就是session初始化的时候只有1/1000的概率启动GC process,这就是原因所在。
改变配置如下:
session.gc_probability = 1
session.gc_divisor = 1
再试验一下,数据库中超期的session记录每次都会删除了,成功。