摘要:看了很多资料,都说在使用使用session_set_save_handler函数前,先要配置php.ini文件,session.save_h...
看了很多资料,都说在使用使用session_set_save_handler函数前,先要配置php.ini文件,session.save_handler=user ,否则,session_set_save_handler()不会生效。但是自己亲自动手,却不是这样的,php.ini的配置未改,使用了session_set_save_handler也是正常的。
<?php header('Content-Type:text/html;charset=utf-8'); session_set_save_handler('open','close','read','write','destroy','gc'); session_start(); function open($save_path, $session_name){ echo 'open<br>'; return true; } function close(){ echo 'close<br>'; return true; } function read($sid){ echo 'read<br>'; } function write($sid, $data){ echo 'write<br>'; } function destroy($sid){ echo 'destroy<br>'; } function gc($maxlifetime){ echo 'gc<br>'; }
运行结果:
open read write close
session垃圾回收机制:
session.gc_probability = 1
和
session.gc_divisor = 1000
这两个参数合起来定义了在每个会话初始化时启动 gc(garbage collection 垃圾回收)进程的概率。此概率用 gc_probability/gc_divisor 计算得来。例如 1/1000 意味着在每个请求中有 1‰ 的概率启动 gc 进程。
gc进程删除session过期的session数据(或文件)