美文网首页
在memcache存储会话

在memcache存储会话

作者: 刚刚悟道 | 来源:发表于2016-09-07 18:23 被阅读122次

    会话数据,即SESSON数据,默认存储在文件中。如果希望将SESSION数据存储在更快速的地方,更重要的是,如果网站是分布式部署的,SESSION数据存储在文件中,就不能满足要求。

    要解决分布式会话问题,可以将会话存储在memcache。

    1.安装好memcache服务端、PHP的memcache扩展。

    2.在PHP的配置文件php.ini中更改SESSION相关的配置。

    我的PHP配置文件 E:\wamp64\bin\apache\apache2.4.17\bin\php.ini 中,SESSION相关的配置是:

    session.save_handler = files
    session.save_path ="E:/wamp64/tmp"
    

    如果有足够的权限,更好的做法是使用 session_save_path 和 session_set_save_handler 函数设置这两个配置。

    3.重启服务器,运行网站,一切正常,感觉不到和之前有什么变化。但会话数据的存储位置的确改变了。

    4.测试会话数据存储在哪里

    A.在没有更改session配置之前,运行本地的网站,登录后台,然后查看 E:/wamp64/tmp,发现产生了SESSION文件,文件内存储了登录信息。

    B.更改session配置后,将 E:/wamp64/tmp 清空,再次登录网站后台,能正常登录,但在 E:/wamp64/tmp 没有发现任何文件。

    C.session可能已经存储到memcache中。但从memcache中获取session数据,却失败了。

    我是这样获取的:
    在session中存储了

    $_SESSION['user'] = 'cg'
    

    从memcache中以 user 为key获取值,失败了。是方式不对?还是key错误?

    为了进一步证明session数据存储在memcache中,我停止了memcache,然后刷新网站,网站立刻变为非登录状态,重新登录,总是不成功。启动
    memcache后,恢复正常。这足以证明session已经存储到memcache中。

    memcache中存储的数据没有持久化存储,当它重启之后,之前所有的数据都会丢失。这会导致一个场景:一个网站将会话信息存储到了memcache中,
    memcache突然重启,正在登录此网站的所有用户的会话信息全部消失,一刷新,全部变为非登录状态。

    相关文章

      网友评论

          本文标题:在memcache存储会话

          本文链接:https://www.haomeiwen.com/subject/msojettx.html