thinkphp5 session的redis方式手动配置问题修复

浏览:533 最后更新:2017-10-26 19:46 分类:驱动 关键字: session redis
thinkphp5 在使用redis作为session存储时,如果在控制器内临时修改配置项,当set后,会导致无法get的情况,主要是因为驱动内的判断顺序,如果有临时配置项,将会全部替换原有的confing配置
1. 临时设置过期时间Session::init(['expire' => 10]);2. 因为session类内判断问题,session类内的init函数    public static function init(array $config = [])
    {
        if (empty($config)) {
            $config = Config::get('session');
        }
然后导致redis内,产生新的key

如图,第一行key为不设置临时配置生成的,第二行为设置临时配置

不知道大家能不能看明白

修改方法很简单,将session类内的init函数改为    public static function init(array $config = [])
    {
        if (empty($config)) {
            $config = Config::get('session');
        } else {
            $config = array_merge(Config::get('session'),$config);
        }
即可解决问题,这个问题主要会影响多服务器的seesion基于redis的共享,谢谢,有不明白可以留言
附件覆盖路径:\thinkphp\library\think\Session.php
评论( 相关
后面还有条评论,点击查看>>