想要详细说明如何为高流量网站存储会话?

时间:2015-02-04 02:22:41

标签: php session session-state

我一直试图了解PHP(或其他语言,实际上,我认为其原理是相同的)在哪里保持会话数据服务器端。

我读了this questionthis question,它们似乎都表明它只是在/ tmp文件夹中创建普通文件,这些文件的名称与存储在客户端cookie中的会话ID相匹配。

但这对我来说似乎有点奇怪......那些拥有数百万并发用户的高流量网站呢......他们真的只有一个充满会话文件的巨型文件夹吗?没有涉及数据库?

2 个答案:

答案 0 :(得分:3)

即使在较小的网站上,我也不知道很多人将文件放在目录中以进行会话存储。它很慢,会话数据可能是您需要快速和频繁访问的内容,具体取决于站点。

通常,将使用像Redis这样的内存数据存储。许多这类数据库支持跨多个主机的基本分片,以及简单的复制形式,可以扩展会话存储。

当您达到数百万并发用户的规模时,您的特定需求会变得更加放大。您需要在会话中存储多少数据?这些数据可以尽最大努力复制给其他人,还是必须是原子的?在这一点上,每个人都有点不同,但原则是相同的。可从任何需要的地方访问快速数据。尽量少存储。

答案 1 :(得分:1)

默认会话位于文件系统中,但您可以将应用配置为将会话存储在内存缓存中,如Memcached或Redis。那么您可以为会话提供许多Web服务器和许多缓存服务器。