【发布时间】:2020-10-15 17:57:04
【问题描述】:
我们有一个流量很大的 SPA 应用程序,有时会在应用程序的几个部分插入双行。
例如用户注册。通常,验证机制会检查电子邮件地址是否已经存在,但是我能够通过使用 axios 两次发送相同的请求来重现问题,从而导致数据库中的用户翻倍。
我最初认为第二个请求应该引发验证错误,但显然它太快了,并且在第一个请求能够存储之前检查用户。
所以我在这些请求之间设置了 500 毫秒的延迟,是的,它起作用了,第二个请求引发了验证错误。
我的问题是,如果两个请求已经在同一秒内分派,有哪些技术可以防止双重插入?
当然,在发出第一个请求后,我们已经阻止了提交表单按钮(从一开始),但人们不知何故设法分派了两次请求。
【问题讨论】:
-
你研究过 Doctrine 的并发性吗? doctrine-project.org/projects/doctrine-orm/en/2.7/reference/… 在表中添加
UNIQUE约束仍然允许双插入吗?
标签: php symfony axios single-page-application