php使用redis作为session的保存工具

在php使用redis作为session的保存工具时,遇到session被清理的问题导致用户没法登陆
请问该如何解决

我使用两种方式来定义session的保存机制
一种是

phpini_set('session.save_handler','Redis');
ini_set('session.save_path','tcp://localhost:6379');

另一种是

session.save_handler = Redis
session.save_path = "tcp://localhost:6379"

在php5.3.28和5.5.10下均不能正常使用session
但是都不能用,请问各位大侠如何解决
ps
@woshicixide 说我写的不详细 那么我就将所有的步骤写一遍

首先是开启redis 使用脚本redis-server.exe redis.conf命令运行redis服务器
然后在php.ini中修改session.save_handler 为redis session.save_handler = Redis
然后在php.ini中修改session.save_path 为 "tcp://localhost:6379" session.save_path = "tcp://localhost:6379"
然后重启Apache服务,重载php.ini
打开登陆页面http://localhost/login.php 输入用户名密码 登陆
浏览器自动跳转到登录成功页面,然后自动返回到登陆页
ps 在loginaction.php中将登陆的userid写入到session中来判断是否登陆

阅读 17.2k
4 个回答

我感觉是你的配置有问题吧,我贴一下我的配置。
[Session]
; Handler used to store/retrieve data.
; http://php.net/session.save-handler
session.save_handler = redis
session.save_path = "tcp://xx.xx.xx.xx:6789?persistent=1&timeout=3&database=11&auth=d9cxa2xx67f2xxxxxxxxxxxx58exx5xfxd29"
也不知道你的redis起起来了没,亦不知你的web服务器是否也启动了,有没有异常。redis扩展呢?

楼主的问题问的太大了,就好象用户在问为什么我这个网站打不开,楼主至少把提示什么错误、你是怎么调用的等等这种东西写出来
先确定下你的redis是否需要账号密码,再试下把php配置里面的localhost改成127.0.0.1

其实我比较喜欢使用memcahced 来存储session这类数据!
原因如下:
1.无需设置密码
2.数据结构简单,且响应速度很快
3.做分布式很方便,一台机器专门放session,做共享

新手上路,请多包涵

对于PHP和Redis中的会话处理,您也可以使用PHPredis。您可以使用此方法或使用MySQLi轻松创建自定义php会话处理程序。Source: https://www.cloudways.com/blo...

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏