需求:使用 mysql 存储 Session,百度之后代码稍作修改并总结如下:
一、先建表:
CREATE TABLE `session` (
`skey` char(32) CHARACTER SET ascii NOT NULL,
`data` text COLLATE utf8mb4_bin,
`expire` int(11) NOT NULL,
PRIMARY KEY (`skey`),
KEY `index_session_expire` (`expire`) USING BTREE
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
主要有三个字段,分别是键,数据,过期时间。
代码如下:
define('SESSION_DNS', 'mysql:host=127.0.0.1:3306;dbname=test;charset=utf8mb4');
define('SESSION_USR', 'root');
define('SESSION_PWD', 'root');
define('SESSION_MAXLIFETIME', get_cfg_var('session.gc_maxlifetime'));
class sessionMysql{
//创建PDO连接
//持久化连接可以提供更好的效率
public static function getConnection() {
try {
$conn = new PDO(SESSION_DNS, SESSION_USR, SESSION_PWD, array(
PDO::ATTR_PERSISTENT => TRUE,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_EMULATE_PREPARES => FALSE
));
return $conn;
} catch (Exception $ex) {
}
}
//自定义的session的open函数
function sessionMysqlOpen($saveP