用PHP+MYSQL4.X 做髮卡系統如何防止重複發放?

正常情況下還好,有時網絡很慢,用戶頻繁刷新瀏覽器時,有一點小几率重複髮卡(本來發2張導致數據庫裏標記了4張),雖然可以通過後續操作修正,但有沒有比較好的方案不出現重複發生?
現在的情況是爲了防止這種情況,已經是在取卡的頁面用AJAX請求返回卡,這樣都還是會有重複


我覺得這跟mysql事務沒關係,樓主說了是刷瀏覽器,但是頻繁的刷頁面應該不會出現此類問題,除非——刷的太快太快了,我認爲正常的人爲操作是不太可能導致的,即使網速慢。


建議樓主說清楚點業務邏輯,我現在只能猜測是用戶刷一下,出一張卡,用戶刷了四次,出了四張卡,只是有兩張因爲網速慢,用戶沒有看到,所以實際上用戶所得是兩張,但是數據並沒有混亂。如果是這樣的話,可以這樣解決:
設定一個時間間隔,比如5分鐘內只能給單用戶發一張
用戶點擊發卡(假設是getcard.php),程序髮卡,然後跳轉到卡片管理頁面(假設是managecard.php),此時的管理頁面必定顯示有剛纔所發的那張卡,此時如果用戶刷新,刷新的只是卡片管理頁面,而非髮卡請求頁面。(但是如果用戶網速慢到在getcard.php就刷新了,那就只好用上個解決方案)


不知道我對問題的理解是否正確。。。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章