Tasays

session入库


重写session的存储机制

  • 便于管理大量的session数据
  • 便于web服务器集群共享session数据。

实现:
定义(实现)自定义的相关的存储处理函数
将其设置为session机制需要的存储函数(告知给session机制,使用我们的函数完成存储处理)

Session机制,共需要6个存储处理函数:
Session_set_save_handler(开始处理器,结束处理器,读处理器,写处理器,删除处理,垃圾回收处理器);

建表

建立session表
表中的记录,对应session文件。
create table session (
session_id varchar(40) not null default ‘’,
session_content text,
primary key(session_id)
)charset=utf8 engine=myisam;。


垃圾回收操作(gc)

在开启session机制过程中,有概率的执行垃圾回收操作。
默认的概率为1/1000
可以配置php.ini
也可设置概率:

ini_set('session.gc_probability', '1');
ini_set('session.gc_divisor','4');

上代码

<?php

function session_begin(){
    $link = mysql_connect('127.0.0.1','root','root');
    mysql_query('set names utf8');
    mysql_select_db('session');
}

function session_end(){
    echo 'end'."<br/>";
}

function session_read($sess_id){

    $sql = 'select session_content from session where session_id = "$sess_id"';
    $result = mysql_query($sql);
    if($row = mysql_fetch_assoc($result)){
        return $row;
    }else{
        return '';
    }
}

function session_wirte($sess_id,$sess_content){
    $time = time();
    $sql = "replace into session(session_id,session_content,createtime)values('$sess_id','$sess_content','$time')";
    mysql_query($sql);
}

function session_delete($sess_id){
    $sql = "delete  from session where session_id = '$sess_id'";
    mysql_query($sql);
}

function session_gc($max_lifetime){
    $time =time();
    $sql = "delete from session where createtime < '$time'-'$max_lifetime'";
    mysql_query($sql);
}

session_set_save_handler('session_begin', 'session_end', 'session_read', 'session_wirte', 'session_delete', 'session_gc');

?>