修改session的存储机制
<?php
//修改session的存储机制
//最起码应该有一个 读方法, 和一个 写方法。
//1, 我们先去建立 读方法 和 写方法。
//2, 告知session系统,使用我们的方法完成数据的读和写操作。
//建立读方法
/**
* 利用 sessionID 获得session数据
*@param $sess_id string 当前会话的ID
*@return string 当前的sessiondata (不需要考虑序列化与反序列化的问题)
*/
function sess_read($sess_id) {
echo 'read';
//查询的sql语句
$query = "select sess_data from sessions where sess_id='{$sess_id}'";
$result = mysql_query($query);
$row = mysql_fetch_assoc($result);
//返回查询到的数据
return $row['sess_data'];
}
//写方法
/**
* @param $sess_id string 当前的sessionID
* @param $sess_data string 当前的session数据,(序列化好的)
*/
function sess_write($sess_id, $sess_data) {
echo 'write';
//应该考虑到 当前的session记录是否存在
//存在应该update更新,不存在应该insert新建
$expire = time();
$query = "insert into sessions values ('{$sess_id}', '{$sess_data}', {$expire}) on duplicate key update sess_data='{$sess_data}', expire={$expire}";
return mysql_query($query);
}
/**
*session_start 是执行的方法,用户初始化资源
* @param $save_path string php.ini中 session.save_path 的值。
* @param $sess_name string php.ini中 session.name 的值。ini_get()也可以获得。
* 这2参数就是php.ini文件中对应的值---可以输出看看
*/
function sess_open($save_path, $sess_name) {//这2个参数可以不写
echo 'open';
//连接上数据库 其他几个函数都可以用这个链接不会涉及到作用于的问题
$link = mysql_connect('localhost', 'root', '1234abcd');
mysql_query('use test', $link);
mysql_query('set names utf8');
}
/**
*在最后,释放资源的方法
*/
function sess_close() {
// echo 'close';
mysql_close();
}
/**
* @param $sess_id string 当前的sessionID
*/
function sess_destroy($sess_id){
echo 'destroy';
$query = "delete from sessions where sess_id='{$sess_id}'";
return mysql_query($query);
}
/**
*负责回收垃圾的函数
*@param $ttl 当前的session数据的最大生存周期
*/
function sess_gc($ttl) {
//
// echo 'gc';
$expire = time() - $ttl;
$query = "delete from sessions where expire < {$expire}";
return mysql_query($query);
}
//将我们的方法 告知给当前的session系统
//利用函数 session_set_save_handler();
session_set_save_handler('sess_open', 'sess_close', 'sess_read', 'sess_write', 'sess_destroy', 'sess_gc');
//开启session
session_start();
$_SESSION['name'] = 'leyangjun';
$_SESSION['age'] = '23';
unset($_SESSION['name']);
//session_destroy();
//var_dump($_SESSION);
修改session的存储机制的更多相关文章
- 138.更改session的存储机制
修改session的存储机制: 默认情况下,session数据时存储到数据库中,当然也可以将session数据存储到其他地方.可以通过设置SESSION_ENGINE来更改session的存储位置,这 ...
- php重写session的存储机制
重写session的存储机制 Session数据区 默认以 文件的形式存储与服务器操作系统临时目录中! 当 session数据区过多时,文件形式的存储,操作速度变慢.磁盘的读写(IO,input/ou ...
- 自定义session的存储机制
<?php class MSession implements SessionHandlerInterface{ // reids 对象 protected $handler = null; / ...
- Session 知识点再整理(二) 自定义 Session 存储机制
对于访问量大的网站,用默认的 Session 存储方式(以文件存储)不适合,因为文件的 I/O 开销会非常大,另外 Session 机制本身使 Session 不能跨机访问,在 Web 集群中无法达到 ...
- php中session的生成机制、回收机制和存储机制探究
1.php中session的生成机制 我们先来分析一下PHP中是怎么生成一个session的.设计出session的目的是保持每一个用户的各种状态来弥补HTTP协议的不足(无状态).我们现在有一个疑问 ...
- [转]mvc3 使用session来存储类来存储用户登陆信息
mvc3 使用session来存储类来存储用户登陆信息 2013-08-26 09:48:56| 分类: NET开发 |举报 |字号 订阅 项目之前的登陆机制是这样的:用户登陆后初始化一个类,类 ...
- 多台web如何共享session进行存储(转载)
session的存储了解以前是怎么做的,搞清楚了来龙去脉,才会明白进行共享背后的思想和出发点.我喜欢按照这样的方式来问(或者去搞清楚):为什么要session要进行共享,不共享会什么问题呢? php中 ...
- Session会话保持机制的原理与Tomcat Session共享的几种实现方式(Session Cluster、memcached+MSM)
一.Session的定义 在计算机科学中,特别是在网络中,session是两个或更多个通信设备之间或计算机和用户之间的临时和交互式信息交换.session在某个时间点建立,然后在之后的某一时间点拆除. ...
- Laravel 5.1 中 Session 数据存储、访问、删除及一次性Session实例教程
1.Session的由来及其实现 HTTP协议是无状态的协议,同一个客户端的这次请求和上次请求是没有对应关系的.也就是说我们无法在服务器端确认两次请求是否是同一个用户所为,这为我们在一些应用场景中实现 ...
随机推荐
- 2014年度辛星解读css第四节
接下来的这一节我计划解说的是超链接和列表的样式,然后我们做出一个导航栏出来,事实上导航栏是很常见的,可是我们这里做得这个有点并不那么完好,等我们学完了css之后再完好它. ************** ...
- Groovy常见语法汇总
一.groovy是什么 简单地说,Groovy 是下一代的java语言,跟java一样,它也运行在 JVM 中. 作为跑在JVM中的另一种语言,groovy语法与 Java 语言的语法很相似.同时,G ...
- Backbone.js 为复杂Javascript应用程序提供模型(models)、集合(collections)、视图(views)的结构
Backbone.js 为复杂Javascript应用程序提供模型(models).集合(collections).视图(views)的结构.其中模型用于绑定键值数据和 自定义事件:集合附有可枚举函数 ...
- 我和小美的撸码日记(3)之中的一个句话搞定MVC表单页数据绑定与提交
另外献上在<线体验Demo地址>希望大家也能从中得到一些启示. 地址:http://121.40.148.178:8080/ . username:guest,password:12345 ...
- 数字证书及CA的扫盲介绍(转)
★ 先说一个通俗的例子 考虑到证书体系的相关知识比较枯燥.晦涩.俺先拿一个通俗的例子来说事儿. ◇ 普通的介绍信 想必大伙儿都听说过介绍信的例子吧?假设 A 公司的张三先生要到 B 公司去拜访,但是 ...
- POJ 2536 Gopher II(二分图的最大匹配)
题目链接:http://poj.org/problem?id=2536 题意:已知有n仅仅老鼠的坐标,m个洞的坐标,老鼠的移动速度为V,S秒以后有一仅仅老鹰要吃老鼠,问有多少个老鼠被吃. 非常明晰,二 ...
- ecshop加广告出现广告位的宽度值必须在1到1024之间的解决方法
ecshop加广告出现广告位的宽度值必须在1到1024之间,这点是非常郁闷的,因为现在宽屏网站逐渐成为主流,越来越多的宽屏网站进入了我们的视线,比如京东啊,一号店啊. 但是ecshop的广告位却不能超 ...
- Big Event in HDU(杭电1171)(多重背包)和(母函数)两种解法
Big Event in HDU Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others ...
- ostringstream使用
ostringstream使用 [本文来源于]http://www.builder.com.cn/2003/0304/83250.shtml http://www.cppblog.com/alanto ...
- Drupal 7 模 .info 文件描述
Drupal使用.info文件以节省话题(theme)和模块(modules)基本数据(metadata). 编码:推荐使用UTF-8.这是一个没有BOM(Byte Order Mark). 下面是一 ...