Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 粘性会话与共享位置_Php_Drupal_Session_Load Balancing - Fatal编程技术网

Php 粘性会话与共享位置

Php 粘性会话与共享位置,php,drupal,session,load-balancing,Php,Drupal,Session,Load Balancing,我正在对一些drupal站点进行负载平衡,两台服务器运行完全相同的站点,DB运行在两台服务器都访问的另一台服务器上,以及负载平衡器将运行的另一台服务器 我正在关注这一点,我想知道这个棘手的会议部分。。既然我已经将所有共享静态数据存储在两台drupal服务器访问的NAS中,为什么不在两台drupal服务器的PHP.ini中定义session.save_路径到该NAS上的某个位置,而不是使用粘性会话?这样行吗 这样做的利弊是什么? 谢谢 现在,当您想要访问任一服务器上的会话时,您必须向NAS发出网络

我正在对一些drupal站点进行负载平衡,两台服务器运行完全相同的站点,DB运行在两台服务器都访问的另一台服务器上,以及负载平衡器将运行的另一台服务器

我正在关注这一点,我想知道这个棘手的会议部分。。既然我已经将所有共享静态数据存储在两台drupal服务器访问的NAS中,为什么不在两台drupal服务器的PHP.ini中定义session.save_路径到该NAS上的某个位置,而不是使用粘性会话?这样行吗

这样做的利弊是什么?
谢谢

现在,当您想要访问任一服务器上的会话时,您必须向NAS发出网络请求,而不是在任一Drupal服务器上的内存中维护会话。基本上,速度很慢

一种更快的方法是完全从应用程序中删除会话,并享受速度优势和管理优势


或者,您可以使用粘性会话,但这会使服务器场的管理变得更加困难。

对于这一点,最典型的答案是memcached。如果您有多个webfrontend,这是存储会话的方法。一旦你拥有了它,你就可以用它作为缓存来探索它的速度。

谢谢你的快速回复!完全删除会话?那怎么办?我不确定我是否理解这个建议:)您需要在应用程序的组件之间使用其他参数传递方法。所以A页想要将信息传递给B页,您需要使用:查询参数、post参数、cookies、db存储或会话以外的其他方法。或者,您可以按照您已经建议的方式将会话推送到每个Web服务器都可以访问的数据存储区。请不要使用Memcached。痛苦接踵而至。memcached是一个非常有效的解决方案,就像缓存一样;memcached是一个缓存存储,密钥可以随时过期,原因很多,这可能会让用户注销,并让他们非常烦恼。Memcached通常用作会话的缓存,但不用作主会话存储。请阅读memcached的作者。我不想建议mongodb:)尽管memcached的作者发出了警告,但我认为向下投票是毫无根据的,因为速度的原因,每个人都在memcached中存储他们的会话。您注销的原因可能还有很多(例如,您的浏览器崩溃,没有写出会话cookie),因此这种权衡并不可怕。如果您能提供一些关于谁是所有人的参考资料,我会告诉您。memcached会比浏览器崩溃更频繁地提前终止会话。每个人都在memcached中缓存自己的会话,但也在持久性存储中保存会话的副本,例如,如果(!fetch_from_mem()){fetch_from_persistent()}我不想对这种方法是否正确进行权衡,但你们让它听起来好像没有人在memcache中存储会话,这是完全错误的。