PHP维护多个服务器之间的会话ID Memcached


PHP maintain Session ID Between Multiple Servers Memcached

我需要在多个服务器之间共享PHP会话。但是,我不知道如何维护在一台服务器上创建的会话ID,以及如何将其传递给下一台服务器。

从本质上讲,客户端可以上传文件,但将文件发送到哪个服务器取决于哪个服务器没有过载。

例如,session_start()在test.com 上调用

一个AJAX帖子被发送到serv1.test.com。当我在serv1.est.com上调用session_start()时,我希望它提取test.com上session_start()创建的现有会话信息。然而,PHP会话似乎不是这样工作的?

我安装了Memcached,并遵循了以下指南:

https://www.digitalocean.com/community/tutorials/how-to-share-php-sessions-on-multiple-memcached-servers-on-ubuntu-14-04

我有一个集中的memcache服务器,test.com和serv1.test.com被配置为使用。但是,session_start()在每台服务器上创建一个唯一的会话,而不是重复使用同一个会话。如果我将PHPSSIONID发送到每个服务器,那么我就可以加载现有会话。

我该如何完成我想要做的事情?我可以在AJAX POST中将PHPSSIONID作为变量发送,但这不是安全风险吗?这是用户可以更改的内容。。。

如何让serv1.test.com继续使用test.com上设置的相同会话?如何将该会话ID安全地传递给serv1.test.com,以便使用session_ID("existingsessionid_from_test.com")打开现有会话?

解决方案是将session.cookie_domain设置为包含子域。

session.cookie_domain=".test.com"

感谢frz3993