我一直在开发一个 web 应用程序,它应该只能通过使用 AJAX 来执行任务。它似乎工作得很好,但我遇到了一个问题,因为我没有在公共(public)站点上存储 Session
变量。
我的登录过程与 iCloud 的相似。您到达要求登录的页面。您的登录使用 AJAX 发送到服务器并返回 true
或 false
。如果为真,登录框就会消失,您就可以使用应用程序了。
当您查看上图时,您会看到两个绿色框是完全相同的站点,没有任何 URL 刷新或任何其他内容。这只是同一个页面。
粉红色框表示尚未注册任何 session
的 Apache 服务器。我的 session 类是使用 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')
);
我似乎想不出一种方法让公共(public)站点在没有 session ID 的情况下在 pink
服务器上请求数据。谁能告诉我 session_set_save_handler
想法背后的想法,就好像我 6 岁一样?我已经阅读了 PHP 手册以获取详细信息,但它确实让我感到困惑。
如果有人知道这种通信方式如何正常工作,请告诉我。所有的 Apache 服务器都通过 LAN 网络连接,并且能够进行通信。此外,它们都可以访问 Apache 包含库中的相同 Session Class
。
最佳答案
看来您遇到的问题可以使用分布式 session 来解决。
使用 memcached,您可以为所有连接的服务器可以共享的所有 session 数据提供一个中心点。
如果您使用的是 Linux,下面的代码演示了如何注释掉本地文件 session 处理并将其替换为内存缓存可以让您共享 session 数据。
~$ 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"
如需深入解释,请访问:http://bakery.cakephp.org/articles/rynop/2010/09/10/using-memcached-to-run-your-sessions
关于php - 在多个 Apache 服务器上使用 session 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16168437/