解释实际发生的事情:
外部服务将带有XML数据的HTTP POST请求发送到PHP脚本。此脚本检查MySQL DB中是否已存在数据。如果没有,它会插入一条新记录。
现在又出现了第二项故障安全服务。它将完全相同的XML数据发送到PHP脚本。
问题:
脚本已经检查记录是否存在。但是请求几乎同时发出,脚本被并行调用。因此,插入了具有相同数据的两个请求的数据。
我考虑过使用队列,但我无法想象一个简单的方法。整个过程实际上非常简单。
确保不插入数据两次的最简单方法是什么?
答案 0 :(得分:0)
为您的事务生成哈希,使其在数据库级别是唯一的。如果你尝试两次添加相同的数据,MySQL会抛出?