解释实际发生的情况:
外部服务将带有 XML 数据的 HTTP POST 请求发送到 PHP 脚本。该脚本检查 MySQL 数据库中是否已存在数据。如果没有,它将插入一条新记录。
现在出现了第二项故障安全服务。它将完全相同的 XML 数据发送到 PHP 脚本。
问题:
脚本已检查记录是否存在。但请求几乎同时到来,并且脚本被并行调用。因此,具有相同数据的两个请求的数据都被插入。
我考虑过使用队列,但我无法想象一个简单的方法来做到这一点。整个过程其实非常简单。
确保不插入数据两次的最简单方法是什么?
最佳答案
为您的事务生成一个哈希值,使其在数据库级别上唯一。如果你尝试两次添加相同的数据,MySQL 会抛出异常?
关于php - 确保多个请求被依次处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43374405/