加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php实现session自定义会话处理器的方法

发布时间:2020-12-13 02:22:47 所属栏目:PHP教程 来源:网络整理
导读:《:php实现session自定义会话处理器的方法》要点: 本文介绍了:php实现session自定义会话处理器的方法,希望对您有用。如果有疑问,可以联系我们。 PHP学习 本篇章节讲解php实现session自定义会话处理器的办法.供大家参考研究.具体分析如下: sess

《:php实现session自定义会话处理器的方法》要点:
本文介绍了:php实现session自定义会话处理器的方法,希望对您有用。如果有疑问,可以联系我们。

PHP学习本篇章节讲解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

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
?>


当你把 session.save_handler设置为user时,你可以把上面这段代码重写,改成你所需要的办法,在执行php文件里调用即可.比如,默认情况下,我们保存 session 的文件名,都是以 sess_ 开头的,其实就是在这里设置的,你可以改成你想要的.

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

希望本文所述对大家的php程序设计有所赞助.

编程之家培训学院每天发布《:php实现session自定义会话处理器的方法》等实战技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培养人才。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读