当前位置: 首页 > 后端技术 > PHP

重复提交表格导致的重复注册问题

时间:2023-03-29 15:08:29 PHP

问题:项目测试时,发现user表中有两条相同的数据,即同一个用户注册了两次。1、分析:第一反应是用户注册时重复提交;前端应该有个提交加载框是锁着的,为什么要重复提交?问了前端才知道是加载框渲染有延迟,所以用户可以重复提交。关于后端,不管前端有没有优化,后端能做什么?思路很简单,在查询mysql事务的时候加写锁。2、解决方案:要重现模拟用户点击,可以采用如下方法:创建两个相同的注册界面a1和a2,在界面a1事务中添加10秒的sleep--sleep(10),然后请求a1和a2a2依次,可以模拟重复注册的问题。修改代码,在查询时加写锁:重复上述操作测试,问题解决。3.结论:重复注册的问题搞清楚了。接口类型属于写入数据,不会出现查询和读取数据。带着这个问题,重新温习一下关于数据库锁的知识。(1)锁只在事务中生效;(2)锁分为共享锁和排它锁。共享锁只锁写不锁读,排他锁锁读写;(3)锁有范围、行锁和表锁。锁;(4)对于同一行数据,locked和unlocked的读写状态是什么。(5)锁主要解决什么问题,并发。待续。.