🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
PHP中的session,不仅可以通过文件和cookie来操作,当网站访问量过大的时候,用数据库来存储session信息是最高效的,下面是我的测试代码,仅供参考! <?php 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<'.($nowtime-self::$maxtime); Db::$db->query($sql); } } 熟悉面向对象的模式,采用PDO连接数据库。 以上源码用到了数据连接,是我自己封装的一个类,源码查看《PHP封装MYSQL数据库操作类源码》。将源码复制粘贴到一个php文件中,直接调用即可使用!