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

时间:2015-10-30 18:33:37

标签: php session memcached sharing

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

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

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

将AJAX帖子发送到serv1.test.com。当我在serv1.test.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()在每个服务器上创建一个唯一的会话,而不是重用相同的会话。如果我将PHPSESSIONID发送到每个服务器,那么我可以加载现有会话。

我如何完成我想要做的事情?我可以将PHPSESSIONID作为变量发送到AJAX POST中,但这不是安全风险吗?这可以由用户改变......

如何让serv1.test.com继续在test.com上使用相同的会话集?如何安全地将该会话ID传递给serv1.test.com,以便我可以使用session_id(“existingsessionid_from_test.com”)打开现有会话?

1 个答案:

答案 0 :(得分:0)

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

session.cookie_domain =" .test.com"

谢谢frz3993