vincentqchow 2014-07-08 09:16 采纳率: 0%
浏览 975

memcached-session-manager关于session过期的设置

实现的环境是apache+3tomcat+msm,session信息存入memcached。一般我们设置比如用户30分钟无任何操作就认为登录超时,但无论是官方文档还是博客上都没有看到如何在msm中设置session过期的参数。有的也只是怎么在客户端set的方法设置。难道这个项目根本就没实现,而只能使memcached server默认的30天?求教!

  • 写回答

1条回答

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-10-25 19:33
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:
    • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/700093
    • 除此之外, 这篇博客: MemCached中的 PHP实现session共享 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

      通过修改PHP-FPM配置文件,实现session会话共享,本案例需要在练习三的基础上实现:
      配置PHP使用memcached服务器共享Session信息
      客户端访问两台不同的后端Web服务器时,Session 信息一致

      在练习三拓扑的基础上,Nginx服务器除了承担调度器外,还需要担任memcached数据库的角色,并在两台后端LNMP服务器上实现PHP的session会话共享。拓扑结构如图所示。
      在这里插入图片描述

      一:构建memcached服务

      (1)安装Memcached服务(如果192.168.4.5上已经有本软件包,此步骤可以忽略)

      [root@proxy ~]# yum -y install memcached
      

      (2)启动服务并查看网络连接状态验证是否开启成功:

      [root@proxy ~]# systemctl restart memcached
      [root@proxy ~]# netstat  -anptu  |  grep memcached
      tcp    0    0 0.0.0.0:11211        0.0.0.0:*        LISTEN        2839/memcached      
      tcp    0    0 :::11211            :::*                LISTEN        2839/memcached      
      udp    0    0 0.0.0.0:11211        0.0.0.0:*                    2839/memcached      
      udp    0    0 :::11211            :::*                            2839/memcached
      

      (3)关闭SELinux、防火墙

      [root@proxy ~]# setenforce 0
      [root@proxy ~]# firewall-cmd --set-default-zone=trusted
      

      二:在后端LNMP服务器上部署Session共享

      注意:这些操作在两台后端Web服务器上均需要执行,以下操作以Web1(192.168.2.100)服务器为例。
      (1)为PHP添加memcache扩展
      注意,因为后端两台web服务器(web1,web2)都需要连接memcached数据库,所以两台主机都需要安装PHP扩展模块(下面也web1为例)。

      [root@web1 ~]# yum -y install  php-pecl-memcache
      

      (2)修改PHP-FPM配置文件,并重启服务
      注意,因为后端两台web服务器(web1,web2)都需要修改配置文件(下面也web1为例)。

      [root@web1 ~]# vim  /etc/php-fpm.d/www.conf            //修改该配置文件的两个参数
      
      //文件的最后2行
      修改前效果如下:
      php_value[session.save_handler] = files
      php_value[session.save_path] = /var/lib/php/session
      //原始文件,默认定义Sessoin会话信息本地计算机(默认在/var/lib/php/session)
      +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
      修改后效果如下:
      php_value[session.save_handler] = memcache
      php_value[session.save_path] = "tcp://192.168.2.5:11211"
      //定义Session信息存储在公共的memcached服务器上,主机参数中为memcache(没有d)
      //通过path参数定义公共的memcached服务器在哪(服务器的IP和端口)
      [root@web1 ~]# systemctl  restart  php-fpm
      

      三:客户端测试

      客户端使用浏览器访问两台不同的Web服务器。
      操作步骤与练习三一致,最终可以获得相关的Session ID信息。


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!