如何在php中利用会话自定义会话处理器

介绍

这篇文章给大家介绍如何在php中利用会话自定义会话处理器,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

具体分析如下:

会话自定义会话处理器,即就是说,所有关于会话的各种操作,都可以通过自定义会话来自己决定。什么意思呢?先来看php . ini中里的session.save_handler配置。

默认情况下,会话。save_handler=文件,表示调用的是系统定义好的处理器(所谓处理器,其实就是一大堆函数/方法)。您可从将会话。save_handler设置成用户或者memcache,甚至是网络文件系统(云计算)。

会话。save_handler=用户:表示调用自定义的会话处理器;会话。save_handler=memcache:表示……略....(大致是保存在内存里,效率更高)。

当设置会话。save_handler=文件时,关于会话的操作,实际上调用了会话。set_save_handler(具体查看php手册)的六个回调函数(所谓回调函数,就是系统调用的,不需要指定调用)。六个回调函数见下面代码,php手册里也有:

代码如下:

& lt; ?php

函数打开(save_path, session_name美元)
{
,全球sess_save_path美元;
,sess_save_path=save_path美元;
,返回(真正);
}

函数关闭()
{
,返回(真正);
}

函数读取($ id)
{
,全球sess_save_path美元;
,sess_file=皊ess_save_path美元/sess_ id"美元;;
,返回(string) @file_get_contents ($ sess_file);
}

函数编写(id、sess_data美元)
{
,全球sess_save_path美元;
,sess_file=皊ess_save_path美元/sess_ id"美元;;
,如果(fp美元=@fopen (sess_file美元,“w")) {
,,,美元=返回写入文件(fp, sess_data美元);
,,,文件关闭(fp);
,,,返回返回美元;
,其他}{
,,,返回(假);
,}
}

功能破坏($ id)
{
,全球sess_save_path美元;
,sess_file=皊ess_save_path美元/sess_ id"美元;;
,返回(@unlink (sess_file美元));
}

函数gc (maxlifetime美元)
{
,全球sess_save_path美元;
,foreach(水珠(“$ sess_save_path/sess_ *“)美元文件名){
,,,如果(filemtime ($ filename) + $ maxlifetime & lt;时间()){
,,,,,@unlink ($ filename);
,,,}
,}
,返回true;
}

session_set_save_handler (“open",“close",“read",“write",“destroy",“gc");
session_start ();
//继续使用会话通常
?在
当你把会话。save_handler设置为用户时,你可以把上面这段代码重写,改成你所需要的方法,在执行php文件里调用即可。比如,默认情况下,我们保存会话的文件名,都是以sess_开头的,其实就是在这里设置的,你可以改成你想要的。

当然,你也可以修改会议保存的方式,默认是保存在文件里,您可以保存到数据库里(当然不建议你这么做,数据库读取速度更慢),也可以设置保存在内存里(速度最快,在memcache相关内容中有详细讲解)。

关于如何在php中利用会话自定义会话处理器就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看的到。

如何在php中利用会话自定义会话处理器