Php 配置_会话以在部署在多台服务器、不同子域上的应用程序上工作

Php 配置_会话以在部署在多台服务器、不同子域上的应用程序上工作,php,session,Php,Session,我有一个由2个应用程序组成的网站: 前端应用程序 后端应用程序 前端有www域,而后端有作业子域。例如,我的前端应用程序的域是www.example.com/*,而我的后端应用程序的域是job.example.com/*我的前端应用程序可以定位在一台服务器上,而后端可以定位在另一台服务器上。或者它们都存储在同一台服务器上 现在的问题是我存储在超级全局会话(PHP)中的会话变量是否可以跨不同的子域工作。如果我在www.example.com/*中设置了\session[“SessionID”],我

我有一个由2个应用程序组成的网站:

  • 前端应用程序
  • 后端应用程序
  • 前端有www域,而后端有作业子域。例如,我的前端应用程序的域是
    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中的变量