TP5 数据库版Session驱动

浏览:2372 最后更新:2016-11-08 15:35 分类:驱动 关键字: tp5 session 驱动 数据库 PDO
下载附件,解压,文件路径\extend\driver\session\Db.php
创建数据表DROP TABLE IF EXISTS `session`;
CREATE TABLE `session` (
  `session_id` char(40) NOT NULL COMMENT 'SESSION键',
  `data` varchar(255) NOT NULL COMMENT 'SESSION值',
  `update_time` int(10) unsigned NOT NULL DEFAULT '0' COMMENT 'SESSION更新时间',
  PRIMARY KEY (`session_id`),
  UNIQUE KEY `session_id` (`session_id`)
) ENGINE=MEMORY DEFAULT CHARSET=utf8;
配置文件config.php'session'                => [
        'id'             => '',
        // SESSION_ID的提交变量,解决flash上传跨域
        'var_session_id' => '',
        // SESSION 前缀
        'prefix'         => 'think',
        // 驱动方式 支持redis memcache memcached
        'type'           => '\driver\session\Db',  // 最主要是这里!!!
        // 是否自动开启 SESSION
        'auto_start'     => true,

        // 下面四个可选,你要喜欢的话可以一块配了
        'expire'     => 0, // Session有效期
        'prefix'     => 'think', // Session前缀
        'table_name' => 'session', // 表名(不包含前缀)
        'db_config'  => '', //应用配置文件中配置的额外的数据库连接信息
    ],
可能需要说明的就是db_config项,这个就是用来切换数据库连接的,TP5手册里说得很清楚了,截个图吧

当你需要db_config1这个连接数据库的时候,你可以配置 'db_config'  => 'db_config1'不配置的话,就是应用默认的数据库连接了
就这么简单

我这个驱动对数据的操作,完全是用了官方的数据库三大神器,采用PDO方式,当然也就包含了Mysql、SqlServer、PgSQL、Sqlite等数据库的支持,虽然我这里用的是MySQL。
MySQL采用的是MEMORY引擎,也就是内存表,所有数据存储在内存,操作速度快,对于session这种形式的数据正好适用。当然啦,重启MySQL,所有session荡然无存,话说回来,你都重启数据库了,还在乎session?
虽然将session入库,可以在一定程度上提高session的性能,特别是用memory引擎的时候,但是,session入库同样存在效率不高、占据数据库connection资源等问题,针对这种情况,可以使用memcached、redis等KV数据存储方案实现高并发、大流量的session存储。
也许这也tp官方为什么只出memcached、redis的session驱动,而不出数据库的session驱动的原因吧。

还有什么问题或者Bug请及时反馈!!!
评论( 相关
后面还有条评论,点击查看>>