Welcome 微信登录

首页 / 数据库 / MySQL / 修改Session存放方式为MySQL的类

<?php
/**
* 修改session存放方式为Mysql Aboc QQ:9986584
*/class Session{//过期时间
private $_LEFT_TIME = 1440;public function open() {
    }public function close(){
    
}/**
   * 读
   */
public function read( $sessid ) {
$sql = "select data from dm_session where sessid ="$sessid" and expiry > time()";
$row = DMmysql::open()->fetchRow( $sql );
return $row["data"];
}/**
   * 写
   */
public function write( $sessid , $sessdata ) {
$data = array(
    "expiry"    =>   time()+ $this->_LEFT_TIME,
    "data"      =>   $sessdata,
    "ip"   =>   "192.168.1.123"
);
if( DMmysql::open()->fetchRow("select sessid from dm_session where sessid ="$sessid"") ) {
   //更新
   $where = "sessid = "$sessid"";
   if( DMmysql::open()->update( "dm_session",$data,$where ) ){
    return true;
   } else {
    return false;
   }
} else {
   //插入
   $data["sessid"] = $sessid;
   if( DMmysql::open()->insert("dm_session",$data) ){
    return true;
   } else {
    return false;
   }  
}
}/**
   * 指定销毁
   */
public function destroy( $sessid ) {
$where = "sessid = "$sessid"";
if(DMmysql::open()->delete("dm_session",$where)) {
   return true;
} else {
   return false;
}
}/**
   * 销毁过期的数据
   */
public function gc( $maxlifetime ) {
//随机销毁数据,减轻服务器压力
if( rand(0,3) == 3 ) {
   $where = "expiry < time()";
   if( DMmysql::open()->delete("dm_session",$where) ) {
      return true;
   } else {
    return false;
   }
}
}}$session = new Session();
session_set_save_handler(
    array(&$session,"open"),
    array(&$session,"close"),
    array(&$session,"read"),
    array(&$session,"write"),
    array(&$session,"destroy"),
    array(&$session,"gc")
);
session_start();
?>
在每个使用session的文件前include一下就行了数据库:CREATE TABLE `dm_session` (
   `sessid` char(32) NOT NULL default "",
   `expiry` int(10) NOT NULL default "0",
   `data` text NOT NULL,
   `ip` char(15) NOT NULL default "",
   PRIMARY KEY   (`sessid`),
   KEY `sesskid` (`sessid`,`expiry`)
) ENGINE=MyISAM DEFAULT CHARSET=gbk;Oracle案例:分析10053跟踪文件Oracle EBS R12 支持 Oracle Database 11g相关资讯      MySQL教程 
  • 30分钟带你快速入门MySQL教程  (02月03日)
  • MySQL教程:关于I/O内存方面的一些  (01月24日)
  • CentOS上开启MySQL远程访问权限  (01/29/2013 10:58:40)
  • MySQL教程:关于checkpoint机制  (01月24日)
  • MySQL::Sandbox  (04/14/2013 08:03:38)
  • 生产环境MySQL 5.5.x单机多实例配  (11/02/2012 21:02:36)
本文评论 查看全部评论 (0)
表情: 姓名: 字数