有效期

当一个有效请求发生时,PHP会根据全局变量session.gc_probability/session.gc_divisor的值, 来决定是否启动一个GC(Garbage Collector)。 默认情况下,session.gc_probability = 1,session.gc_divisor =100,也就是说有1%的可能性会启动GC。 GC的工作,就是扫描所有的session信息,用当前时间减去session的最后修改时间(modified date), 同session.gc_maxlifetime参数进行比较,如果生存时间已经超过gc_maxlifetime,就把该session删除。

session服务端相关参数:

  1. session.gc_maxlifetime, 检测
  2. session.gc_probability, 启动gc概率的分子
  3. session.session.gc_divisor, 启动gc概率的分母
  4. session.save_path 为了避免php多次设置不同值,导致部分设置无效,修改此值为不同路径

session客户端相关参数:

  1. session.use_cookies
  2. session.cookie_lifetime

session有效配置参数参考session官方配置

在服务端的存储:

如果你在 session_start() 前调用了 session_name(‘SID’); 那么正常情况下(客户端支持Cookie时), 会给客户端发送 Set-Cookie: SID=(session_id 的值);

以session_id()的值作用存储的键(用作文件名),一个会话的内容以php序列化的值进行存储,如使用memecache进行会话存储了key, 及key_expire, 以下是两个会话的存储情况

Dumping bucket 2 – 2 total items
add sess_p82oq054cm3mh5t0ugf4ho7p32_expire 1 1489398509 10
1489398711
add sess_ir9ld39eo8q0dv9b0qfdbddlu5_expire 1 1489398509 10
1489398625
Dumping bucket 7 – 1 total items
add sess_ir9ld39eo8q0dv9b0qfdbddlu5 0 1489398509 261
__default|a:7:{s:15:”session.counter”;i:8;s:19:”session.timer.start”;i:1489398513;s:18:”session.timer.last”;i:1489398625;s:17:”session.timer.now”;i:1489398625;s:20:”_COLA_CAPTCHA_VALUE_”;s:4:”yKP6″;s:14:”jz.auth.expire”;i:1489434625;s:11:”jz.auth.uid”;s:1:”4″;}
Dumping bucket 8 – 1 total items
add sess_p82oq054cm3mh5t0ugf4ho7p32 0 1489398509 327
__default|a:7:{s:15:”session.counter”;i:2;s:19:”session.timer.start”;i:1489398711;s:18:”session.timer.last”;i:1489398711;s:17:”session.timer.now”;i:1489398711;s:14:”loginBeforeUrl”;s:41:”http://passport1.jz.x1.cn/?q=index&from=1″;s:13:”loginBeforeId”;s:5:”index”;s:15:”session.jsToken”;s:32:”69d660f8fdc72ec55ca647937e425b8a”;}

在发生Exception后,static类型的变量instances未被unset