thinkphp 5.1.41 默认支持 session,会话缓存指将 session 存储从文件切换为 redis 或 apcu 等缓存驱动;推荐 redis(分布式适用),需配置 cache.php 和 session.php;apcu 仅限单机高性能场景;默认 file 方式无需配置但不适用于高并发或集群。

ThinkPHP 5.1.41 默认已支持会话(Session)功能,但“会话缓存”不是指单独开启某项开关,而是指将 Session 数据存储方式从默认的文件改为更高效、可共享的缓存驱动(如 Redis 或 APCu)。这能解决高并发下文件锁争用、多服务器无法共享 Session 等问题。
下面分三类常见场景说明具体操作:
使用 Redis 存储 Session(推荐,适合生产环境)
Redis 是最常用且稳定的 Session 存储方案,尤其适合分布式部署。
确保 PHP 已安装
redis扩展:
运行php -m | grep redis,有输出即表示已启用;否则需安装扩展并重启 PHP-FPM。-
修改
config/cache.php,在'stores'中确认已配置redis驱动(参考已有配置):'redis' => [ 'type' => 'redis', 'host' => '127.0.0.1', 'port' => 6379, 'password' => '', 'select' => 0, 'expire' => 3600, 'timeout' => 30, ], -
在
config/session.php中设置 Session 驱动为cache,并指定使用redis存储:return [ 'type' => 'cache', // 必须设为 cache 'store' => 'redis', // 对应 cache.php 中 stores 的键名 'prefix' => 'session:', // 可选,避免 key 冲突 'expire' => 3600, // Session 过期时间(秒) 'auto_start' => true, ];⚠️ 注意:
store值必须与cache.php中'stores'下定义的键名完全一致(如'redis'),不能写成'type'=>'redis'。
使用 APCu 存储 Session(仅限单机、高性能读场景)
APCu 是进程内内存缓存,响应极快,但不支持跨进程/跨机器共享,适合纯单机部署且 Session 不需持久化的后台管理类应用。
- 确保已安装并启用
apcu扩展(含apcu.enable_cli=0); - 在
config/cache.php中添加 APCu store:'apcu' => [ 'type' => 'apcu', 'prefix' => 'sess_', 'expire' => 3600, ], - 修改
config/session.php:'type' => 'cache', 'store' => 'apcu', // 对应上面定义的 store 名 'expire'=> 1800,
使用默认文件存储(无需额外配置)
如果未修改 session.php,ThinkPHP 5.1.41 默认使用 type => 'file',数据存在 runtime/session/ 目录下。
这种方式无需安装扩展,但不适合并发高或集群环境。
- 若想显式启用并确认,可保留
config/session.php为:return [ 'type' => 'file', 'path' => RUNTIME_PATH . 'session/', 'prefix' => 'think_session_', 'expire' => 3600, 'auto_start' => true, ];
只要 auto_start => true,每次请求都会自动启动 Session,无需手动调用 session_start()。
你可以在控制器中直接使用:
Session::set('user_id', 123);
echo Session::get('user_id'); // 输出 123
不复杂但容易忽略
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











