找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 444|回复: 0
打印 上一主题 下一主题

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

[复制链接]

2647

主题

2647

帖子

7881

积分

论坛元老

Rank: 8Rank: 8

积分
7881
跳转到指定楼层
楼主
发表于 2018-2-14 05:49:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

            本文实例讲述了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手册里也有:
[U]复制代码[/U] 代码如下:
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
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简单的会话类代码
  • PHP session会话的安全性分析
  • 使用PHP会话(Session)实现用户登陆功能
  • PHP会话控制:Session与Cookie详解
  • php使用Cookie实现和用户会话的方法
  • php中session_id()函数详细介绍,会话id生成过程及session id长度
  • PHP入门教程之会话控制技巧(cookie与session)
  • php通过会话控制实现身份验证实例
  • PHP会话控制实例分析
            
  • 分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    用户反馈
    客户端