php mysql laravel中如何处理股票阅读和更新中的竞争条件?[重复]

ylamdve6  于 12个月前  发布在  PHP
关注(0)|答案(1)|浏览(126)

此问题在此处已有答案

Understanding pdo mysql transactions(3个答案)
How to make sure there is no race condition in MySQL database when incrementing a field?(2个答案)
3天前关闭。
我正在开发一个软件,其中多个销售订单通过Excel文件。我的问题是,销售订单的多个CSV文件上传到我的系统。系统解析这些文件的作业。如果所有文件都有相同的产品,即PRODUCTA的顺序,所有订单读取剩余的股票在同一时间。这是,假设20. 3订单来,第一个需要8数量第二个需要5数量和第三个需要15数量。现在发生的事情是非常有趣的。所有三个读取剩余的股票在同一时间,它是20。所有三个请求可以看到股票是20和每个请求采取其股票和更新剩余的股票根据其数字。例如,第一个更新reamaining库存为12第二个做15和第三个做5。实际上,它应该是-8。我已经处理,如果股票是不可用的,但忽略这一部分,并专注于我现在面临的问题。任何帮助或建议,将不胜感激。谢谢

kokeuurv

kokeuurv1#

我相信你正在寻找的是一个互斥体,互斥体将允许你锁定应用程序的所有相关部分,直到你完成处理,然后释放这些部分。
以下是关于互斥体设置的更多信息:
https://wpdesk.net/blog/mutexes-deadlocks-and-other-developer-nightmares/
下面是一个常用的PHP实现:
https://symfony.com/doc/current/components/lock.html
编辑:根据系统的简单程度,互斥也可能是多余的,因为数据库事务足以使事情原子化,足以满足您的需要。

相关问题