【问题标题】:CodeIgniter store PHP session in RedisCodeIgniter 在 Redis 中存储 PHP 会话
【发布时间】:2015-02-20 03:23:20
【问题描述】:
我正在关注an article 以将 PHP 会话保存在 Redis 而不是文件系统中(这样我就可以与 node.js 共享会话)
我了解session_set_save_handler 的工作原理,但我对如何使用 CodeIgniter 框架进行设置感到困惑?我应该扩展 CI_Session 类并将 session_set_save_handler 放在那里吗?
【问题讨论】:
标签:
php
codeigniter
redis
【解决方案1】:
将您的会话存储在数据库中。
为了存储会话,您必须首先为此创建一个数据库表。这是会话类所需的基本原型(用于 MySQL):
CREATE TABLE IF NOT EXISTS `ci_sessions` (
session_id varchar(40) DEFAULT '0' NOT NULL,
ip_address varchar(45) DEFAULT '0' NOT NULL,
user_agent varchar(120) NOT NULL,
last_activity int(10) unsigned DEFAULT 0 NOT NULL,
user_data text NOT NULL,
PRIMARY KEY (session_id),
KEY `last_activity_idx` (`last_activity`)
);
设置
$config['sess_use_database'] = TRUE;
在config.php 文件中。
一旦启用,Session 类会将会话数据存储在 DB 中。
确保您在配置文件中也指定了表名:
$config['sess_table_name'] = 'ci_sessions';
【解决方案2】:
Codeigniter 版本 3
支持 Redis 会话
打开和编辑
应用程序/config/config.php
要启用 Redis,请将会话驱动程序设置为“redis”
$config['sess_driver'] = 'redis';
redis服务器路径示例
redis://hostname:port 或 tcp://hostname:port
设置 sess_save_path localhost 的值进行本地测试
$config['sess_save_path'] = 'tcp://localhost:6379';
在您的本地主机上测试 Redis。
请参考我在how to install Redis for Windows的回答