对于高流量网站,我们计划扩展为在HA设置中使用2个Web服务器。
我们需要解决的一个问题是PHP会话的管理。
显而易见的答案是将会话处理转移到数据库,这很简单,示例代码在互联网上广泛使用。
另一方面,我们知道memcached的好处,但是一旦memcached节点失败,该节点上的用户将失去会话。
因此,我们正在考虑实现一种设置,默认情况下会在memcached中处理会话,但也会在DB中编写。当我们得到一个memcached MISS时,我们会尝试从数据库中检索它。
以上是否有意义并且您是否知道有任何实施示例?
提前致谢
答案 0 :(得分:6)
我向你推荐Dormando经常被引用的how to store sessions in MySQL with memcached caching解释。 original LiveJournal post更加冗长,但更彻底地解释了为什么只在memcached中存储会话是一个坏主意。
简而言之:
答案 1 :(得分:1)
会话这是暂时的事情,如果每月一次memcache-server失败并截断会话,则无需担心。我确信你可以只使用memcache进行会话,而无需在DB中进行复制。
但是如果您仍想将会话转储到磁盘,那么作为现有解决方案,您可以使用Redis:
Redis适用于内存数据集。 根据您的使用情况,您可以 通过倾销而坚持下去 数据集到磁盘
...
Redis还支持简单到设置的主从复制 先快速无阻塞 同步,自动重新连接 净拆分等等。