• PHP多机实现session共享


    博主小菜一枚,关于session共享只是略知一二,后来被人问起,内心忐忑,语无伦次,之后看过几篇文章后,心中安定,特此记录。

    基础说明

    session是服务器与客户端进行信息交互用于验证身份的一种方式,用于存储客户端的一些信息数据,php默认session存储方式为服务器本地的文件,具体配置如下:

    session.save_handler = files #默认为文件存储方式
    session.save_path ="D:/wamp/tmp"#session文件存储地址
    session.name = PHPSESSID #存储到cookie的sessionID,每次客户端访问服务器,都会带着客户端本地的cookie信息发送到服务器

    其他详细配置,可以参考php.ini,这里不过多详细说明

    设计思路
    单机服务器都是将session信息默认存储到自己的本地,当多台部署时,需要一个公用的session服务,保证每个服务器都可以通过公用服务获取到session信息,公用服务方式可以是文件,缓存,数据库,或者专门用于session共享服务的工具等等;
    这里主要说明一下redis;
    redis属于高性能服务,运行于内存,支持多种数据结构类型非常适合用于存储session信息,同事redis还有定时将内存数据固化到磁盘的功能,这在服务宕机,数据恢复方面也提供了便利,如果用memcache,则需要定时任务执行数据备份脚本;

    设计方案:
    一、通过php自身的session配置实现
    session.save_handler = redis#配置为redis
    session.save_path ="tcp://127.0.0.1:6379"#如果redis设置了密码则:session.save_path = "tcp://redis服务地址:端口?auth=密码"
    该方案由于配置不支持多样化,只能用于用户少量时的应用。

    二、通过框架扩展session应用,这里不贴具体代码实现,主体思路是用户所有请求均通过框架单一入口文件(现在流行框架都是这样设计),通过框架进行session扩展,开发者通过编码可以自由选择session存储机制,数据备份机制,数据恢复机制,
    数据读取规则等;大体思路为session扩展类需要对外提供session信息的访问,存储,修改。session服务可以通过配置文件实现不同的架构设计,具体设计有hashMap等。


  • 相关阅读:
    Linux命令记录-Tomcat(七)
    Linux命令记录-PostgreSql(六)
    Linux命令记录-Mysql(五)
    Linux Crontab实现定时任务
    Linux命令记录-Java环境(四)
    Linux命令记录-防火墙(三)
    Linux命令记录-服务相关(二)
    Linux命令记录-环境准备(一)
    Linux 系统安装,磁盘分区要点
    java之Collection类
  • 原文地址:https://www.cnblogs.com/feiyujinghong/p/6742643.html
Copyright © 2020-2023  润新知