php实现session自定义会话处理器的方法
本文实例讲述了php实现session自定义会话处理器的方法。分享给大家供大家参考。具体分析如下:
session自定义会话处理器,即就是说,所有关于session的各种操作,都可以通过自定义会话来自己决定。什么意思呢?先来看php.ini里的session.save_handler配置。
默认情况下,session.save_handler=files,表示调用的是系统定义好的处理器(所谓处理器,其实就是一大堆函数/方法)。您可从将session.save_handler设置成user或者memcache,甚至是网络文件系统(云计算)。
session.save_handler=user:表示调用自定义的会话处理器;session.save_handler=memcache:表示...略....(大致是保存在内存里,效率更高)。
当设置session.save_handler=files时,关于session的操作,实际上调用了session.set_save_handler(具体查看php手册)的六个回调函数(所谓回调函数,就是系统调用的,不需要指定调用)。六个回调函数见下面代码,php手册里也有:
<?php
functionopen($save_path,$session_name) { global$sess_save_path; $sess_save_path=$save_path; return(true); }
functionclose() { return(true); }
functionread($id) { global$sess_save_path; $sess_file="$sess_save_path/sess_$id"; return(string)@file_get_contents($sess_file); }
functionwrite($id,$sess_data) { global$sess_save_path; $sess_file="$sess_save_path/sess_$id"; if($fp=@fopen($sess_file,"w")){ $return=fwrite($fp,$sess_data); fclose($fp); return$return; }else{ return(false); } }
functiondestroy($id) { global$sess_save_path; $sess_file="$sess_save_path/sess_$id"; return(@unlink($sess_file)); }
functiongc($maxlifetime) { global$sess_save_path; foreach(glob("$sess_save_path/sess_*")as$filename){ if(filemtime($filename)+$maxlifetime<time()){ @unlink($filename); } } returntrue; }
session_set_save_handler("open","close","read","write","destroy","gc"); session_start(); //proceedtousesessionsnormally ?>