CI框架session使用redis存储

发布于 2022-09-11 23:35:09 字数 409 浏览 19 评论 0

下面是框架内session配置代码
image.png

错误日志如下:
`Session: Unable to obtain lock for ci_session:gsqko2dlahlv21s8kil87nb3q60qvfpe after 30 attempts, aborting.

Severity: Warning --> session_start(): Failed to read session data: user (path: tcp://127.0.0.1:6379) system\libraries\Session\Session.php 143 `

请各位有经验的小伙伴帮帮忙

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

涙—继续流 2022-09-18 23:35:09

https://codeigniter.com/userg...
超时。获取锁timeout 次数过多

眼波传意 2022-09-18 23:35:09

经过各种百度谷歌查询,各种办法一一实验,最后卵用没有。没办法智能自己去查看源码了,一点一点排查。
1、既然是因为锁的问题,那就去找哪里有关于lock的代码;怎么找呢?因为我们用的是session存储redis,那么可以将范围缩小到一下这两个文件

system/libraries/Session/session.php
system/libraries/Session/drivers/Session_redis_driver.php

然后开始找lock,发现只有Session_redis_driver.php中可以搜索到lock字眼,然后我们一点一点往下走,
image.png
看到了,字面意思是获取锁的意思,我们点开看看,然后断点输出,看会发生什么。
image.png
结果是喜人的,它走了,说明我们的方向没错,然后一行一行往下看,不知道就一行一行的断点输出,结果发现以下这个if写的可能有问题;

image.png
下面是我改的
image.png
然后测试,好了没问题,在redis中也可以看到数据
image.png
如果还有问题,按一下方法试一下
在CI的config下创建redis.php文件,内容为

$config['socket_type'] = 'tcp';
$config['host'] = '自己的ip';
$config['password'] = NULL;
$config['port'] = 6379;
$config['timeout'] = 7200;

然后可以在redis可视化后台看看会不会有session存进来

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文