设计概念,以防止重复订单被收到我的系统

时间:2016-02-18 22:00:09

标签: php duplicates mutex phalcon

我有一个我建立的网络系统,它是我们客户的在线订购门户。我们存储他们的库存,并通过此门户网站下订单。

我们对客户参考编号进行重复检查,以便相同的订单无法通过两次,但是我们遇到了一些问题,如果客户多次向我们的API发送订单(如果是,则在几毫秒内)另外),我们的系统没有足够的时间来标记收到的订单,因此,系统允许重复。

我正试图决定如何对抗这种情况。我不想为此使用数据库约束,因为我发现这是一个应用程序问题而不是数据库问题,并且不相信这是一个很好的解决方案。

关于如何打击这个的任何设计思路?我想到的一个解决方案是使用带有引用号的互斥锁,这样如果互斥锁被锁定为该引用号,那么它可能会在一秒内重试等?我的理解是,Mutex几乎是万无一失的,因为它们是由文件系统强制执行的?

任何想法都将不胜感激

1 个答案:

答案 0 :(得分:0)

您可以尝试使用nonce策略。我们的想法是将随机数设置为隐藏的表单字段并将其存储在会话中。验证帖子上的ID。用户必须故意刷新页面以获得新的ID并能够再次发布。

更新

因此,既然您正在使用API​​服务,那么我不得不说您可以使用批处理系统。订单进入并存放在保留区域。 chron作业遍历批处理并执行必要的修剪操作。