寻找有关如何为高流量站点存储会话的详细信息?
Looking for elaboration on how sessions are stored for high-traffic sites?
我一直在努力了解 PHP(或其他语言,真的,我想原则是相同的)在哪里保存会话数据服务器端。
我读了 this question and this question,这两者似乎都表明它默认只在 /tmp 文件夹中创建普通文件,这些文件的名称与存储在客户端 cookie 中的会话 ID 相匹配。
但这对我来说似乎有点奇怪.....拥有数百万并发用户的高流量网站怎么样......他们真的只有一个装满会话文件的巨大文件夹吗?没有涉及数据库?
默认会话在文件系统中,但您可以将您的应用配置为将您的会话存储在内存缓存中,例如 Memcached 或 Redis。那么您可以为您的会话拥有许多 Web 服务器和许多缓存服务器。
即使在较小的网站上,我也不知道有多少人将文件放在一个目录中用于会话存储。它很慢,会话数据可能是您需要快速和频繁访问的内容,具体取决于站点。
通常会使用像 Redis 这样的内存数据存储。许多此类数据库支持跨多个主机的基本分片,以及支持会话存储扩展的简单复制形式。
当您达到数百万并发用户的规模时,您的特定需求会变得更加丰富。您需要在会话中存储多少数据?该数据能否在尽力而为的基础上复制给其他人,还是必须是原子的?在这一点上,每个人做起来有点不同,但原理是一样的。可从任何需要的地方快速访问数据。尽量少存。
我一直在努力了解 PHP(或其他语言,真的,我想原则是相同的)在哪里保存会话数据服务器端。
我读了 this question and this question,这两者似乎都表明它默认只在 /tmp 文件夹中创建普通文件,这些文件的名称与存储在客户端 cookie 中的会话 ID 相匹配。
但这对我来说似乎有点奇怪.....拥有数百万并发用户的高流量网站怎么样......他们真的只有一个装满会话文件的巨大文件夹吗?没有涉及数据库?
默认会话在文件系统中,但您可以将您的应用配置为将您的会话存储在内存缓存中,例如 Memcached 或 Redis。那么您可以为您的会话拥有许多 Web 服务器和许多缓存服务器。
即使在较小的网站上,我也不知道有多少人将文件放在一个目录中用于会话存储。它很慢,会话数据可能是您需要快速和频繁访问的内容,具体取决于站点。
通常会使用像 Redis 这样的内存数据存储。许多此类数据库支持跨多个主机的基本分片,以及支持会话存储扩展的简单复制形式。
当您达到数百万并发用户的规模时,您的特定需求会变得更加丰富。您需要在会话中存储多少数据?该数据能否在尽力而为的基础上复制给其他人,还是必须是原子的?在这一点上,每个人做起来有点不同,但原理是一样的。可从任何需要的地方快速访问数据。尽量少存。