【问题标题】:Kubernetes and WooCommerce cart issuesKubernetes 和 WooCommerce 购物车问题
【发布时间】:2018-08-10 20:40:12
【问题描述】:

当我在 Google Kubernetes Engine 上运行多个 WordPress 实例并删除会话亲和性时,我在购物车中出现了奇怪的行为,商品消失并返回。人们被注销。 (当我使用会话亲和性时,我 100% 的流量会发送到一个 pod)。

这似乎是会话持久性的问题,但据我所知,WordPress 依赖于 cookie 来存储登录和购物车信息而不是会话,所以这应该不是问题。当我在本地使用 docker 时,销毁容器并重新启动我的购物车,所以这似乎证实了这一点。

发生了什么事?更重要的是,我能做些什么来解决它?

【问题讨论】:

  • 我设置了一个单实例 redis pod 并将其用于 php 会话处理,我认为如果我这样做,我将能够删除会话亲和性。 redis 会话处理似乎正在工作,但是当我删除会话亲缘关系时,同样的旧问题又回来了。每个实例似乎都维护自己的购物车和 wp 登录。

标签: wordpress kubernetes google-compute-engine


【解决方案1】:

看起来 woocommerce 使用 PHP 会话来获取购物车信息:

https://docs.woocommerce.com/wc-apidocs/source-class-WC_Cart.html#108 https://docs.woocommerce.com/wc-apidocs/class-WC_Cart_Session.html

默认情况下,该数据将存储在特定的 pod 文件系统中。有多种方法可以告诉多主机环境中的 PHP 使用公共会话存储。

【讨论】:

  • 我的理解是woocommerce“会话”依赖于cookies而不是php会话。
  • cookie 可能包含一个密钥或令牌——这是为了在会话存储中查找会话——这可能是服务器上的文件系统。将实际的购物车数据(可能包含各种详细元数据,包括图像)保存在 cookie 中通常是不可行的。
  • 而且上面的 woocommerce 代码 sn-ps 明确地用于 woocommerce 购物车的 php 会话。
  • 我将 redis 设置为通用会话存储,但将会话亲和性设置为 none 后问题再次出现。
猜你喜欢
  • 2021-05-04
  • 2018-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-01
相关资源
最近更新 更多