Php 配置_会话以在部署在多台服务器、不同子域上的应用程序上工作
我有一个由2个应用程序组成的网站:Php 配置_会话以在部署在多台服务器、不同子域上的应用程序上工作,php,session,Php,Session,我有一个由2个应用程序组成的网站: 前端应用程序 后端应用程序 前端有www域,而后端有作业子域。例如,我的前端应用程序的域是www.example.com/*,而我的后端应用程序的域是job.example.com/*我的前端应用程序可以定位在一台服务器上,而后端可以定位在另一台服务器上。或者它们都存储在同一台服务器上 现在的问题是我存储在超级全局会话(PHP)中的会话变量是否可以跨不同的子域工作。如果我在www.example.com/*中设置了\session[“SessionID”],我
www.example.com/*
,而我的后端应用程序的域是job.example.com/*
我的前端应用程序可以定位在一台服务器上,而后端可以定位在另一台服务器上。或者它们都存储在同一台服务器上
现在的问题是我存储在超级全局会话(PHP)中的会话变量是否可以跨不同的子域工作。如果我在
www.example.com/*
中设置了\session[“SessionID”]
,我可以从job.example.com/*
中检索相同的session[“SessionID”]?我是否需要进行特殊配置才能工作?会话数据保存在函数给定的路径中,因此需要使两个应用程序都可以访问该目录。如果它们在同一台服务器上,您可能不需要执行任何操作,但是如果它们在不同的服务器上,您必须使用某种网络文件系统(如NFS)并将其装载,以便会话保存路径位于两台服务器的网络文件系统上。您可以编写自己的会话处理程序,将会话数据保存到数据库,然后,您可以从任何有权访问该数据库的服务器访问它。编写您自己的会话处理程序:
使用中央数据库或memcache服务器。子域只影响cookie,必须正确设置cookie(作为域范围),以便通过从www.*导航到jobs.*来保持会话id
对于会话持久性,您可以使用memcache服务器并使用。您不需要编写自己的会话处理程序。要在多个域/服务器上使用相同的会话,您必须注意两个方面:
- 存储会话数据的位置,以便两个域/服务器都可以访问它,以及
- 会话标识符在两个域/服务器上的携带方式,以便
对于不同的服务器,您可以编写两台服务器都可以使用的自己的服务器。例如,这可能是一个双方都可以访问的数据库 会话ID共享
如果要为多个域(可能在同一台服务器上或不同的服务器上)共享会话ID,并且要使用cookie传输会话ID,则必须确保cookie对两个域都有效。但这只有在两个域共享同一个更高级别的域时才可能实现。对于共享
example.com
的www.example.com
和jobs.example.com
,session\u set\u cookie\u params()的$domain
参数必须设置为。example.com
我不太清楚$domain的最后一部分。$domain是一个超级全局PHP变量,我们可以设置它吗?对不起,我现在知道$domain是指session\u set\u cookie\u params中的变量