关于mysql并发重复插入问题
1.出现问题的场景
1.网络延时,或者使用FD工具模拟请求
sql
select time form 订单 where uid='15' order by time desc limit 0,1
if(当前时间-time<15){
exit(请勿频繁请求);
}
INSERT INTO 订单 (time, uid,...) VALUES (值1, 值2,....)
下面还有个CURL请求
if(CURL 请求成功){
}else{
}
问题:
搞并发或者网络不稳定情况下..出现了重复插入..没有拦截到..还是进入了curl
需要在进入curl请求前拦截..
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
不要让你的表单重复提交
重复请求的处理,主要看你的条件需求。
如果限制同一客户端同一时间只能同一请求。很简单的做法就是,将客户端请求标识放入缓存中。
并在每次访问前判断当前翻个看是否已经有访问请求,有则打回这个请求。反之,则正常处理。
同样客户端,网络层,数据库都可以做同样类似的措施避免重复插入。
表单重复提交这一点首先要控制,写入时先进行判断,跳过并写入日志