【问题标题】:How to block duplicate orders?如何屏蔽重复订单?
【发布时间】:2023-01-20 22:12:38
【问题描述】:

我使用的是 shopware 6.4.17,我有重复订单的问题,订单流程有点长,所以有一种方法可以再次发送请求并从同一个购物车下新订单。有没有办法不再发送相同的请求? 有没有人有同样的问题或知道解决方案?

我正在使用 Varnish,因此无法实现在模板中生成的任何密钥。

【问题讨论】:

  • 你有运行 MySQL 集群吗?
  • 是的,我让它运行

标签: shopware shopware6


【解决方案1】:

我假设您正在使用多个应用程序服务器。考虑到这一点,这可能与缺少会话锁定有关,会话锁定允许从用户角度对同一 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-25
    • 2013-02-13
    • 2011-11-28
    • 2016-11-02
    • 1970-01-01
    • 2011-03-04
    • 2011-08-11
    相关资源
    最近更新 更多