美文网首页
在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存储会话

    会话数据,即SESSON数据,默认存储在文件中。如果希望将SESSION数据存储在更快速的地方,更重要的是,如果网...

  • Tomcat基于memcached会话共享

    安装两台memcache,基于tomcat做会话同步;(只对动态内容缓存,用于追踪用户会话)前提: 两个tomca...

  • JS中的存储

    sessionStorage会话级别的存储,存储只在同一个会话中的页面才能访问,会话结束后数据也随之销毁。 loa...

  • session 持久化和Cookie创建 会话技术

    会话技术 存储客户端的状态 会话技术,记录会话客户端的状态与数据 Cookie:数据存储在客户端本地的。减少服务器...

  • 分布式缓存和分布式事务

    分布式缓存 缓存选型 Memcache memcache 提供了简单的kv cache存储,value大小为1mb...

  • redis

    作者:烨竹 Redis概述 一、memcache的不足之处1、没有密码2、Memcache是存储内存但是没有自带的...

  • redis相关总结

    Redis与Memcache的区别:1)redis是可以持久化(存储到硬盘),memcache只能在内存中2)re...

  • 会话&cookie

    会话:在web中,会话对象用来存储特定用户所需要的属性及配置信息。这样,当用户在应用程序的web页之间跳转时,存储...

  • JavaScript 存储对象

    Web 存储 API 提供了 sessionStorage (会话存储) 和 localStorage(本地存储)...

  • Storage 存储

    存储## 分为本地存储 和 会话存储在一定程度解决了cookie的不便利性 本地存储 localStorage 会...

网友评论

      本文标题:在memcache存储会话

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