<?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的存储机制的更多相关文章

  1. 138.更改session的存储机制

    修改session的存储机制: 默认情况下,session数据时存储到数据库中,当然也可以将session数据存储到其他地方.可以通过设置SESSION_ENGINE来更改session的存储位置,这 ...

  2. php重写session的存储机制

    重写session的存储机制 Session数据区 默认以 文件的形式存储与服务器操作系统临时目录中! 当 session数据区过多时,文件形式的存储,操作速度变慢.磁盘的读写(IO,input/ou ...

  3. 自定义session的存储机制

    <?php class MSession implements SessionHandlerInterface{ // reids 对象 protected $handler = null; / ...

  4. Session 知识点再整理(二) 自定义 Session 存储机制

    对于访问量大的网站,用默认的 Session 存储方式(以文件存储)不适合,因为文件的 I/O 开销会非常大,另外 Session 机制本身使 Session 不能跨机访问,在 Web 集群中无法达到 ...

  5. php中session的生成机制、回收机制和存储机制探究

    1.php中session的生成机制 我们先来分析一下PHP中是怎么生成一个session的.设计出session的目的是保持每一个用户的各种状态来弥补HTTP协议的不足(无状态).我们现在有一个疑问 ...

  6. [转]mvc3 使用session来存储类来存储用户登陆信息

    mvc3 使用session来存储类来存储用户登陆信息 2013-08-26 09:48:56|  分类: NET开发 |举报 |字号 订阅   项目之前的登陆机制是这样的:用户登陆后初始化一个类,类 ...

  7. 多台web如何共享session进行存储(转载)

    session的存储了解以前是怎么做的,搞清楚了来龙去脉,才会明白进行共享背后的思想和出发点.我喜欢按照这样的方式来问(或者去搞清楚):为什么要session要进行共享,不共享会什么问题呢? php中 ...

  8. Session会话保持机制的原理与Tomcat Session共享的几种实现方式(Session Cluster、memcached+MSM)

    一.Session的定义 在计算机科学中,特别是在网络中,session是两个或更多个通信设备之间或计算机和用户之间的临时和交互式信息交换.session在某个时间点建立,然后在之后的某一时间点拆除. ...

  9. Laravel 5.1 中 Session 数据存储、访问、删除及一次性Session实例教程

    1.Session的由来及其实现 HTTP协议是无状态的协议,同一个客户端的这次请求和上次请求是没有对应关系的.也就是说我们无法在服务器端确认两次请求是否是同一个用户所为,这为我们在一些应用场景中实现 ...

随机推荐

  1. myeclipse10.7皴,出口解决war包时报“SECURITY ALERT: INTEGERITY CHECK ERROR”

    一.操作系统的环境是win7,64bit和32bit的操作系统我试过都OK 依照网上一些Crack破解程序步骤操作就能够完毕破解过程, 也能够到我的CSDN资源里下载文件包 myeclipse10.7 ...

  2. unity中的MonoBehaviour.OnMouseDown()

    在官网的api文档中仅说明了 Description OnMouseDown is called when the user has pressed the mouse button while ov ...

  3. redhat linux 5上创建本地yum源

    1.挂载光驱 [root@rh5rac1 ~]#mkdir -p /mnt/cdrom [root@rh5rac1 ~]#mount /dev/cdrom /mnt/cdrom 2.将redhat光盘 ...

  4. 一起来开发Android的天气软件(四)——使用Gson解析数据

    离上一篇文章过去才4.5天,我们赶紧趁热打铁继续完毕该系列的天气软件的开发. 承接上一章的内容使用Volley实现网络的通信.返回给我们的是这一串Json数据{"weatherinfo&qu ...

  5. NPC

    这里的想说的NPC不是Non-Player-Controled,非玩家控制角色,而是Non-determinisitc Polynomial complete problem,它属于一类很特殊的问题, ...

  6. SWT的文件选择对话框I的使用

    swt文件选择框 FileDialog fileselect=new FileDialog(shell,SWT.SINGLE);                          fileselect ...

  7. pthread_once()使用(某个时间在整个程序中仅执行一次,不确定是那个线程)

    在多线程环境中,有些事仅需要执行一次.通常当初始化应用程序时,可以比较容易地将其放在main函数中.但当你写一个库时,就不能在main里面初始化了,你可以用静态初始化,但使用一次初始化(pthread ...

  8. FAAC1.28 在海思HI3520D/HI3515A平台linux中的编译 优化

    FAAC1.28的下载地址:http://www.audiocoding.com/downloads.html 怎样编译: 1../configure --host=arm-hisiv100nptl- ...

  9. STL源代码剖析 容器 stl_hashtable.h

    本文为senlie原创.转载请保留此地址:http://blog.csdn.net/zhengsenlie hashtable ------------------------------------ ...

  10. ecshop后台权限增加

    1.在后台“推荐管理”里添加“推荐人分成”.“会员分成”两个操作功能以及权限     index.php?act=menu     incluedes/inc_priv.php:权限对照表.inc_m ...