摘要:看了很多資料,都說在使用使用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數據(或文件)