首页 > 代码库 > php中session入库(mysql)机制

php中session入库(mysql)机制

seesion的入库(mysql)操作,主要是修改seesion的读取与写入操作

主要是通过 bool session_set_save_handler(seesion_open,seesion_close,session_read,session_write,session_destory,session_gc);

依次对应的是开启seesion连接方式,关闭session,读取session,写拉seesion,销毁session,seesion的垃圾加收机制。

基本实例项目

 

 1 <?php 2     /* 3     * 创建数据库 4     drop DATABASE if EXISTS session; 5     create DATABASE session CHARSET utf8; 6     use session; 7     drop TABLE if EXISTS session; 8     create table session ( 9     sess_id char(32) UNIQUE NOT NULL,10     sess_info text,11     sess_expire int not null default 012     )CHARSET utf8 ENGINE INNODB;13     */14     //session入库15     //1. 开启session16     function sess_open(){17         //连接mysql18         mysql_connect(‘localhost‘,‘root‘,‘root‘);19         mysql_query(‘set names utf8‘);20         mysql_query(‘use session‘);21         //查看当前调用了什么方法22         echo __FUNCTION__.‘<br/>‘;23     }24     //2. 关闭session25     function sess_close(){26         //关闭mysql27         mysql_close();28         echo __FUNCTION__.‘<br/>‘;29     }30     //3. 读取session31     function sess_read($sess_id){32         //从数据库读取33         //echo $sess_id;  //这个sess_id,是系统自动生成的34         //在读取数据的时候我们要过滤掉过期的数据35         //通过当前时间与系统的session最大周期的差36         $expire = time() - ini_get(‘seesion.gc_maxlifetime‘);37         $sql = "select * from session where sess_id = ‘{$sess_id}‘ and sess_expire >= ‘{$expire}‘";38         $res = mysql_query($sql);39         echo __FUNCTION__.‘<br/>‘;40         //得到一个数组41         if($sess = mysql_fetch_assoc($res)){42             return $sess[‘sess_info‘];43         }44     }45     // 4.写入操作46     function sess_write($sess_id,$sess_info){47         //向数据库中写入session48         //echo $sess_id.$sess_info;49         $time = time();50         $sql = ‘replace into session values(‘{$sess_id}‘,‘{$sess_info}‘,‘{$time}‘)‘;//使用replace主是要因为要重复修改seesion,而sess_id又是UNIQUE51         echo __FUNCTION__.‘<br>‘;52         return mysql_query($sql);53     }54     //5. 销毁55     function sess_destroy($sess_id){56         //删除数据库中信息57         $sql = "delete from session where sess_id = ‘{$sess_id}‘";58         echo __FUNCTION__.‘<br>‘;59         return mysql_query($sql);60     }61     //6.回收62     function sess_gc(){63         //删除过期的数据64         $expire = time()-ini_get(‘session.gc_maxlifetime‘);65         $sql = "delete from session where sess_expire < ‘{$expire}‘";66         echo __FUNCTION__.‘<br/>‘;67     }68     //修改session机制69 70     session_set_save_handler($sess_open,$sess_close,$sess_read,$sess_write,$sess_destroy,$sess_gc);71     //启动session72     session_start();73     //加入session数据74     $_SESSION[‘name‘] = ‘张三‘;75     $_SESSION[‘age‘]  = ‘25‘;76     //查看数据77     //var_dump($_SESSION);78     //删除session79     //session_destroy();

 

php中session入库(mysql)机制