我们正在安装Magento Enterprise,它内置支持将Redis用作会话处理程序。
对于上下文:我们使用实施PayPal付款方式的模块作为我们用户的选项。
该模块会生成一个包含PayPal表单的灯箱,这样就不必将用户重定向到页面之外。
为此,我们必须生成一个令牌,并将其保存到会话中。灯箱在PayPal页面中加载URL参数中的令牌。
当用户填写表单时,用户将被重定向到URL中具有相同令牌的确认订单页面。
URL令牌必须与会话令牌匹配,否则进程失败。
当我们禁用redis并使用普通文件会话(我们在生产环境中无法做到)时,这很正常。
以下是我们无法理解的内容:
当我们使用带断点的xdebug逐步执行代码时,我们看到在redis中的会话中设置了令牌。付款处理工作正常。
当我们没有单步执行代码时,由于令牌不匹配而导致进程失败,并且当我们在整个过程中检查令牌密钥时,它最初正确设置它,然后最后,令牌是我们看到的是几个会话前设置的令牌。
会话密钥上的TTL是24分钟,但不认为这应该是一个问题,因为它应该覆盖该值。当我们使用断点暂停整个过程时,不确定为什么它能正常工作。
有什么想法吗?
答案 0 :(得分:0)
它是标准的Magento PayPal模块吗?
我的第一个想法是,其他东西正在将一个对象存储到redis(它不应该这样做),后来的请求会收到一个缓存的值,因为这个对象是缓存的。
也许做一个简单的测试: