作者寄语:
thinkphp5 在使用redis作为session存储是,如果在控制器内临时修改配置项,当set后,会导致无法get的情况
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