本文实例讲述了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手册里也有:
function open($save_path, $session_name)
{
global $sess_save_path;
$sess_save_path = $save_path;
return(true);
}
function close()
{
return(true);
}
function read($id)
{
global $sess_save_path;
$sess_file = \"$sess_save_path/sess_$id\";
return (string) @file_get_contents($sess_file);
}
function write($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);
}
}
function destroy($id)
{
global $sess_save_path;
$sess_file = \"$sess_save_path/sess_$id\";
return(@unlink($sess_file));
}
function gc($maxlifetime)
{
global $sess_save_path;
foreach (glob(\"$sess_save_path/sess_*\") as $filename) {
if (filemtime($filename) + $maxlifetime < time()) {
@unlink($filename);
}
}
return true;
}
session_set_save_handler(\"open\", \"close\", \"read\", \"write\", \"destroy\", \"gc\");
session_start();
// proceed to use sessions normally
?>
本文地址:https://www.stayed.cn/item/8454
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我