mysql 会话session_67、通过MYSQL数据库操作Session会话完整源码类

PHP中的session,不仅可以通过文件和cookie来操作,当网站访问量过大的时候,用数据库来存储session信息是最高效的,下面是我的测试代码,仅供参考!

class Session{

//session有效时长

static public $maxtime;

//指定session数据表

static public $table;

//初始化

static function run($maxtime, $table){

if(ini_get('session.save_handler')=='user' || ini_set('session.save_handler', 'user')){

session_set_save_handler(

array(__CLASS__, 'start'),

array(__CLASS__, 'close'),

array(__CLASS__, 'read'),

array(__CLASS__, 'write'),

array(__CLASS__, 'destroy'),

array(__CLASS__, 'gc')

);

}

self::$maxtime = $maxtime ? $maxtime : 1000;

self::$table = $table ? $table : 'photos_session';

//开启session会话控制

session_start();

}

//开

static function start($path, $session_name){

return true;

}

//关

static function close(){

self::gc();

session_unset();

session_destroy();

return true;

}

//读

static function read($sid){

$sql = 'select * from '.self::$table.' where session_id='."'$sid'";

$sessionObj = Db::$db->query($sql);

$sessionArry = $sessionObj->fetchAll(PDO::FETCH_ASSOC);

return count($sessionArry)>0 ? $sessionArry[0]['data'] : 0;

}

//写

static function write($sid, $data){

//获取当前seesion_id();

$sid = session_id();

//获取当前时间

$nowtime = time();

//判断当前用户session是否已经存在

$sql = 'select * from '.self::$table.' where session_id="'.$sid.'"';

$sessionObj = Db::$db->query($sql);

$sessionArry = $sessionObj->fetchAll(PDO::FETCH_ASSOC);

//如果已经存在就update,如果不存在就insert

if(count($sessionArry)>0){

$sql = 'update '.self::$table.' set data='."'$data'".', nowtime='."'$nowtime'".' where session_id='."'$sid'";

Db::$db->query($sql);

}else{

$sql = 'insert into '.self::$table.' set data='."'$data'".', session_id='."'$sid'".', nowtime='."'$nowtime'";

Db::$db->query($sql);

}

}

//卸

static function destroy($sid){

$sql = 'delete from '.self::$table.' where session_id='."'$sid'";

Db::$db->query($sql);

}

//垃

static function gc(){

$nowtime = time();

$sql = 'delete from '.self::$table.' where time

Db::$db->query($sql);

}

}

熟悉面向对象的模式,采用PDO连接数据库。

以上源码用到了数据连接,是我自己封装的一个类,源码查看《PHP封装MYSQL数据库操作类源码》。将源码复制粘贴到一个php文件中,直接调用即可使用!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值