【发布时间】:2023-01-20 22:12:38
【问题描述】:
我使用的是 shopware 6.4.17,我有重复订单的问题,订单流程有点长,所以有一种方法可以再次发送请求并从同一个购物车下新订单。有没有办法不再发送相同的请求? 有没有人有同样的问题或知道解决方案?
我正在使用 Varnish,因此无法实现在模板中生成的任何密钥。
【问题讨论】:
-
你有运行 MySQL 集群吗?
-
是的,我让它运行
我使用的是 shopware 6.4.17,我有重复订单的问题,订单流程有点长,所以有一种方法可以再次发送请求并从同一个购物车下新订单。有没有办法不再发送相同的请求? 有没有人有同样的问题或知道解决方案?
我正在使用 Varnish,因此无法实现在模板中生成的任何密钥。
【问题讨论】:
我假设您正在使用多个应用程序服务器。考虑到这一点,这可能与缺少会话锁定有关,会话锁定允许从用户角度对同一 OrderController 端点发出多个请求。使用会话锁定,只允许第一个请求进入控制器。任何其他请求都会等待第一个请求完成,从而防止重复订单。
当您使用默认会话处理程序时,PHP 默认使用会话锁定。在内部它只是一个用于基于文件的会话的 flock。
另请参阅https://symfony.com/doc/current/session.html 了解更多信息。
对于 Redis,此 php.ini 配置应该有效:
session.save_handler = redis
session.save_path = "tcp://redis.default.svc.cluster.local:6379"
redis.session.locking_enabled = 1
【讨论】: