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


Posted in PHP onJanuary 27, 2015

本文实例讲述了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 相关文章推荐
Breeze 文章管理系统 v1.0.0正式发布
Dec 14 PHP
php字符串截取中文截取2,单字节截取模式
Dec 10 PHP
关于PHP5 Session生命周期介绍
Mar 02 PHP
php上传文件,创建递归目录的实例代码
Oct 18 PHP
3个PHP多维数组转为一维数组的方法实例
Mar 13 PHP
PHP+FastCGI+Nginx配置PHP运行环境
Aug 07 PHP
PHP实现批量生成App各种尺寸Logo
Mar 19 PHP
PHP获取当前文件的父目录方法汇总
Jul 21 PHP
windows下的WAMP环境搭建图文教程(推荐)
Jul 27 PHP
Laravel定时任务的每秒执行代码
Oct 22 PHP
php设计模式之策略模式实例分析【星际争霸游戏案例】
Mar 26 PHP
微信小程序和php的登录实现
Apr 01 PHP
php实现检查文章是否被百度收录
Jan 27 #PHP
php创建session的方法实例详解
Jan 27 #PHP
PHP连接SQLServer2005的方法
Jan 27 #PHP
php去除html标记的原生函数详解
Jan 27 #PHP
分享下php5类中三种数据类型的区别
Jan 26 #PHP
php字符串过滤与替换小结
Jan 26 #PHP
PHP利用APC模块实现文件上传进度条的方法
Jan 26 #PHP
You might like
解析CI即CodeIgniter框架在Nginx下的重写规则
2013/06/03 PHP
php防止伪造的数据从URL提交方法
2014/06/27 PHP
thinkphp实现发送邮件密码找回功能实例
2014/12/01 PHP
PHP filter_var() 函数, 验证判断EMAIL,URL等
2021/03/09 PHP
一些有用的JavaScript和jQuery的片段分享
2011/08/23 Javascript
jQuery中判断一个元素是否为另一个元素的子元素(或者其本身)
2012/03/21 Javascript
js 剪切板的用法(clipboardData.setData)与js match函数介绍
2013/11/19 Javascript
Ext GridPanel加载完数据后进行操作示例代码
2014/06/17 Javascript
javascript学习总结之js使用技巧
2015/09/02 Javascript
javascript日期处理函数,性能优化批处理
2015/09/06 Javascript
JavaScript统计字符串中每个字符出现次数完整实例
2016/01/28 Javascript
JS 通过系统时间限定动态添加 select option的实例代码
2016/06/09 Javascript
jQuery实现鼠标经过像翻页和描点链接效果
2016/08/08 Javascript
js前端实现图片懒加载(lazyload)的两种方式
2017/04/24 Javascript
JavaScript中的一些隐式转换和总结(推荐)
2017/12/22 Javascript
JS匿名函数和匿名自执行函数概念与用法分析
2018/03/16 Javascript
vue+element 实现商城主题开发的示例代码
2020/03/26 Javascript
[14:19]2018年度COSER大赛-完美盛典
2018/12/16 DOTA
Python中的异常处理学习笔记
2015/01/28 Python
Python实现CET查分的方法
2015/03/10 Python
使用Python的Django框架实现事务交易管理的教程
2015/04/20 Python
简单的连接MySQL与Python的Bottle框架的方法
2015/04/30 Python
在Python的Django框架中用流响应生成CSV文件的教程
2015/05/02 Python
基于python实现微信模板消息
2015/12/21 Python
Python3.6简单操作Mysql数据库
2017/09/12 Python
利用Python找出序列中出现最多的元素示例代码
2017/12/08 Python
使用python打印十行杨辉三角过程详解
2019/07/10 Python
pymysql模块的使用(增删改查)详解
2019/09/09 Python
pygame实现俄罗斯方块游戏(基础篇2)
2019/10/29 Python
Python将二维列表list的数据输出(TXT,Excel)
2020/04/23 Python
使用python爬取抖音app视频的实例代码
2020/12/01 Python
HTML5安全介绍之内容安全策略(CSP)简介
2012/07/10 HTML / CSS
关于解决iframe标签嵌套问题的解决方法
2020/03/04 HTML / CSS
经典广告词大全
2014/03/14 职场文书
关于教师节的演讲稿
2014/09/04 职场文书
员工担保书范本
2015/09/22 职场文书