現在的情況是爲了防止這種情況,已經是在取卡的頁面用AJAX請求返回卡,這樣都還是會有重複
我覺得這跟mysql事務沒關係,樓主說了是刷瀏覽器,但是頻繁的刷頁面應該不會出現此類問題,除非——刷的太快太快了,我認爲正常的人爲操作是不太可能導致的,即使網速慢。
建議樓主說清楚點業務邏輯,我現在只能猜測是用戶刷一下,出一張卡,用戶刷了四次,出了四張卡,只是有兩張因爲網速慢,用戶沒有看到,所以實際上用戶所得是兩張,但是數據並沒有混亂。如果是這樣的話,可以這樣解決:
設定一個時間間隔,比如5分鐘內只能給單用戶發一張
用戶點擊發卡(假設是getcard.php),程序髮卡,然後跳轉到卡片管理頁面(假設是managecard.php),此時的管理頁面必定顯示有剛纔所發的那張卡,此時如果用戶刷新,刷新的只是卡片管理頁面,而非髮卡請求頁面。(但是如果用戶網速慢到在getcard.php就刷新了,那就只好用上個解決方案)
不知道我對問題的理解是否正確。。。