THINKPHP 中将 SESSION 存入 MYSQL 方法

来源:互联网 发布:模特卡尺寸数据 编辑:程序博客网 时间:2024/05/12 00:31

试了很多次,也在网上看了很多,也在THINKPHP手册中找了很多。都没有正正解决,测试了很长时间终于基本搞定。
不知道还有什么隐患或者不合理的地方,写出来希望大家指教和给我建议。
我用的是 THINKPHP 3.1.2版
index.php 中 设置为

1<?php
2define('APP_DEBUG', true);//设置为调试模式
3require '../ThinkPHP/ThinkPHP.php';//设置入口文件
4ini_set("session.save_handler", "user");//设置PHP的SESSION由用户定义

config.php设置为

01<?php
02return array(//'配置项'=>'配置值'
03            // 添加数据库配置信
04    'SHOW_PAGE_TRACE' =>true,
05    'DB_TYPE'   => 'mysql'// 数据库类型
06    'DB_HOST'   => 'localhost'// 服务器地址
07    'DB_NAME'   => 'thinkphp'// 数据库名
08    'DB_USER'   => '你的用户名'// 用户名
09    'DB_PWD'    => '你的密码'// 密码
10    'DB_PORT'   => 3306, // 端口
11    'DB_PREFIX' => 'think_'// 数据库表前缀缀
12'SESSION_OPTIONS'=>array(
13        'type'=> 'db',//session采用数据库保存
14        'expire'=>1440,//session过期时间,我也不知道是秒还是毫秒,请知道的人告诉我,如果不设就是php.ini中设置的默认值
15   ),
16'SESSION_TABLE'=>'think_session'//必须设置成这样,如果不加前缀就找不到数据表,这个我试过多次
17);
18?>
19 
201
21 
22数据库设置采用SessionDb.class.php中的DDL,不过后面加了ENGINE=MyISAM DEFAULT CHARSET=utf8
23 
241
25 
26CREATE TABLE think_session (
27       session_id varchar(255) NOT NULL,
28       session_expire int(11) NOT NULL,
29       session_data blob,
30       UNIQUE KEY `session_id` (`session_id`)
31   )ENGINE=MyISAM DEFAULT CHARSET=utf8;

现在访问你的 index.php 后再在 phpmyadmin 中找到 think_session 表,我惊喜的发现多了条数据。
搞定。其他不要设置了,SessionDb.class.php会自动加载.

这样ThinkPhp的调用session(‘session_name’,'session_value’), 系统就会自动把这个session存储上面创建的数据库中。

原创粉丝点击