在多个Apache服务器上使用会话数据库

Dim*_*ser 5 php database apache session class

我一直在研究webApp,它应该只能通过使用AJAX来执行任务.它似乎工作得很好,但我遇到了一个问题,因为我没有Session在公共站点上存储变量.

我的登录程序类似于iCloud.您到达一页要求登录.您的登录使用AJAX发送到服务器并返回truefalse.如果为true,则登录框将消失,您已准备好使用应用程序.

在此输入图像描述

当您查看上面的图像时,您将看到两个绿色框作为完全相同的站点,没有任何URL刷新或任何东西.它只是同一页面.

粉红色框表示尚未注册的Apache服务器Sessions.我的会话类已经使用这个session_set_save_handler想法构建.

session_set_save_handler(
         array($this, 'open'),
         array($this, 'close'),
         array($this, 'read'),
         array($this, 'write'),
         array($this, 'destroy'),
         array($this, 'gc')
     );
Run Code Online (Sandbox Code Playgroud)

我似乎无法找到公共站点在pink没有会话ID的情况下在服务器上请求数据的方法.有人能告诉我这个想法背后的session_set_save_handler想法,好像我6岁了吗?我已经阅读了PHP手册了解详细信息,但它确实让我感到困惑.

如果有人知道这种沟通方法如何正常工作,请告诉我.所有Apache服务器都通过LAN网络连接,并且能够进行通信.此外,他们都可以访问Session ClassApache include Library中的相同内容.

小智 2

看来您遇到的问题可以使用分布式会话来解决。

使用 memcached,您可以为任何连接的服务器可以共享的所有会话数据提供一个中心点。

如果您使用的是 Linux,下面的代码演示了如何注释掉本地文件会话处理,并用 memcache 替换它可以让您共享会话数据。

  ~$ cat /etc/php5/apache2/php.ini | grep -i session 
  [Session] 
  ;session.save_handler = files 
  session.save_handler = memcache 
  session.save_path = "tcp://127.0.0.1:11211"
Run Code Online (Sandbox Code Playgroud)

如需深入解释,请访问:http://bakery.cakephp.org/articles/rynop/2010/09/10/using-memcached-to-run-your-sessions