duanfaxin7014 2013-04-23 11:40
浏览 106
已采纳

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

I have been working on a webApp which should be able to perform tasks only by using AJAX. It seems to work pretty good, but I am running into a problem, because I do not store Session variables on the public site.

My login procedure is similar to iCloud's. You arrive to one page asking for a login. Your login is sent to a server using AJAX and returns a true or false. If true, the login box disappears and you are ready to work with the applications.

enter image description here

When you Are looking at the image above, you shall see the two green boxes as the exact same site, without any URL refreshes or anything. It is simply the same page.

The Pink boxes represents Apache Servers that hasn't registered any Sessions. My Session Class has been builded using the session_set_save_handler idea.

session_set_save_handler(
         array($this, 'open'),
         array($this, 'close'),
         array($this, 'read'),
         array($this, 'write'),
         array($this, 'destroy'),
         array($this, 'gc')
     );

I can't seem to figure out a way for the public site to ask for data on the pink servers without a Session ID. Could anybody tell me the idea behind the session_set_save_handler idea as if I was 6 years old? I have read the PHP manual for details, but it really confuses me.

If anybody knows about how this communication method could work properly, please tell me. All of the Apache Servers are connected through a LAN network, and are able to communicate. Also they all have access to the same Session Class in an Apache include Library.

  • 写回答

1条回答 默认 最新

  • dtpoius74857 2013-09-04 14:31
    关注

    It appears the problem you are having can be solved using distributed sessions.

    Using memcached you can provide a central point for all session data that any connected server can share.

    If you are using linux, the below code demonstrates how commenting out local file session handling, and replacing it with memcache can allow you to share session data.

      ~$ 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"
    

    For an in depth explanation visit: http://bakery.cakephp.org/articles/rynop/2010/09/10/using-memcached-to-run-your-sessions

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 mmocr的训练错误,结果全为0
  • ¥15 python的qt5界面
  • ¥15 无线电能传输系统MATLAB仿真问题
  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀