壮壮由之妈_245 发布于 2017-05-17 00:33

在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中来判断是否登陆

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扩展呢?

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

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

    2017-05-17 22:44 回答
  • 有篇文章很风骚的解决了这个问题  https://tieba.baidu.com/p/4899381545

    2017-08-09 14:34 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
活跃用户
  • 1
    问道摩托
  • 2
    袁广龙976丶
  • 3
    逍遥子
  • 4
    亮仔
  • 5
    芙蓉花
  • 6
    作小die_syj
  • 7
    王丽珠景平怡伦_621
  • 8
    adfa3sd5f6a
  • 9
    欣欣大妮
  • 10
    狂风DKC想毕业321
PHP1.CN | 中国最专业的PHP中文社区 | PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | PHP问答
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved PHP1.CN 第一PHP社区 版权所有