php中session默认的存储方式是硬盘,php也可以改变默认的存储方式。
主要使用到session_set_save_handler方法,下面分享下如何将session保存到MySql数据库中的具体代码。
1.建session表
代码如下 | 复制代码 |
CREATE TABLE `session` ( `sessionid` varchar(128) NOT NULL, `uid` int(11) NOT NULL, `data` mediumblob NOT NULL, `timestamp` int(11) NOT NULL, `ip` varchar(15) NOT NULL, PRIMARY KEY (`sessionid`), KEY `time_session` (`timestamp`,`sessionid`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; |
uid 是保留字段
2.自定义session类
代码如下 | 复制代码 |
class CustomSession{ private $conn; public static function getInstance(){ return $instance; public function __construct(){ public function __destruct(){ public function open(){ public function close(){ mysql_close($this->conn); public function read($id){ public function write($id,$data){ public function destroy($id){ public function gc($lifetime){ public function query($query){ ?> |
3.测试程序
代码如下 | 复制代码 |
include('./CustomSession.class.php'); CustomSession::getInstance(); session_start(); $_SESSION['username']='feng'; print_r($_SESSION); ?> |
运行测试程序后,查看数据库可以发现session表中已经增加了session记录