zoukankan      html  css  js  c++  java
  • session共享个人小结

    一.需求问题:

        如果你的网站是存放在一个机器上,那么是不存在这个问题的,因为会话数据就在这台机器,但是如果你使用了负载均衡把请求分发到不同的机器呢?

        这个时候会话id在客户端是没有问题的,  

        但是如果用户的两次请求到了两台不同的机器,而它的session数据可能存在其中一台机器,这个时候就会出现取不到session数据的情况,

        于是session的共享就成了一个问题。

    二.实现session共享方法:

      1.通过保存sessionID来获取对应session的值,

        php中,通过session_Id()函数能取到sessionID,session的值是保存在服务端的,我们可以将sessionID保存在cookie中,因为cookie是保存在客户端的。

        当用户请求后端数据时,首先获取保存在客户端的cookie中的sessionID值,在php中首先

        $sessionid =$_COOKIE['sesssionid'];

        session_id($sessionid)                //设置获取对应sessionid的session的值

        session_start()                           //此函数一定要在session_id()函数的后面

        之后就可以获取对应的session值

        ***此方法的sessionID保存在客户端,信息存储不安全,cookie也可以伪造

      2。

        利用nginx的基于访问ip的hash路由策略,

        保证访问的ip始终被路由到同一个tomcat上,这个配置更简单。

        但如果应用是某一个局域网大量用户同时登录,这样负载均衡就没什么作用了。

        而且客户端访问的服务器必须是这个nginx上,否咋ip获取不准确造成混乱。

      3。

        使用memcache和redis实现共享(个人首选)

        修改所有服务器 php配置文件里面的

        session.save_handler = files 改为session.save_handler = memcache /redis

        session.save_path = "127.0.0.1:11211或127.0.0.1:6379" 

        或者使用in_set()方法

        

      4.保存在数据库

        数据库需要同步,增加了数据库的i/o,一般不使用

           

        

        

  • 相关阅读:
    课堂测试-文本操作
    异常的总结
    动手动脑实验-异常
    从小工到专家-读后感3
    从小工到专家-读后感2
    从小工到专家-读后感1
    构建之法读书笔记(一)
    2.12日总结
    BaseAdapter的使用
    Activity之Bundle的使用
  • 原文地址:https://www.cnblogs.com/qqlong/p/8663014.html
Copyright © 2011-2022 走看看