我一直致力于webApp,它应该只能通过使用AJAX来执行任务。它似乎工作得很好,但我遇到了问题,因为我没有在公共站点上存储Session
个变量。
我的登录程序与iCloud类似。您到达一页要求登录。您的登录使用AJAX发送到服务器并返回true
或false
。如果为true,则登录框将消失,您已准备好使用应用程序。
当您查看上面的图片时,您将看到两个绿色框作为完全相同的网站,没有任何URL刷新或任何东西。它只是同一页。
Pink框表示尚未注册任何Sessions
的Apache服务器。我的会话类已使用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')
);
我似乎无法找到公共网站在没有会话ID的情况下在pink
服务器上请求数据的方法。有人能告诉我session_set_save_handler
想法背后的想法,好像我6岁了吗?我已阅读PHP手册了解详细信息,但它确实让我感到困惑。
如果有人知道这种沟通方法如何正常运作,请告诉我。所有Apache服务器都通过LAN网络连接,并且能够进行通信。此外,他们都可以访问Apache include Library中的相同Session Class
。
答案 0 :(得分: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"
如需深入解释,请访问:http://bakery.cakephp.org/articles/rynop/2010/09/10/using-memcached-to-run-your-sessions