用PHP+MYSQL4.X 做发卡系统如何防止重复发放?

来源:互联网 发布:淘宝店铺双十一报名 编辑:程序博客网 时间:2024/04/29 10:12
正常情况下还好,有时网络很慢,用户频繁刷新浏览器时,有一点小几率重复发卡(本来发2张导致数据库里标记了4张),虽然可以通过后续操作修正,但有没有比较好的方案不出现重复发生?
现在的情况是为了防止这种情况,已经是在取卡的页面用AJAX请求返回卡,这样都还是会有重复


我觉得这跟mysql事务没关系,楼主说了是刷浏览器,但是频繁的刷页面应该不会出现此类问题,除非——刷的太快太快了,我认为正常的人为操作是不太可能导致的,即使网速慢。


建议楼主说清楚点业务逻辑,我现在只能猜测是用户刷一下,出一张卡,用户刷了四次,出了四张卡,只是有两张因为网速慢,用户没有看到,所以实际上用户所得是两张,但是数据并没有混乱。如果是这样的话,可以这样解决:
设定一个时间间隔,比如5分钟内只能给单用户发一张
用户点击发卡(假设是getcard.php),程序发卡,然后跳转到卡片管理页面(假设是managecard.php),此时的管理页面必定显示有刚才所发的那张卡,此时如果用户刷新,刷新的只是卡片管理页面,而非发卡请求页面。(但是如果用户网速慢到在getcard.php就刷新了,那就只好用上个解决方案)


不知道我对问题的理解是否正确。。。
原创粉丝点击