qq分分彩app|qq分分彩开奖记录官网

TP5 數據庫版Session驅動

瀏覽:6177 最后更新:2018-08-30 18:56 分類:驅動 關鍵字: 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請及時反饋!!!
評論( 相關
后面還有條評論,點擊查看>>
qq分分彩app