鍍金池/ 問(wèn)答/PHP  數(shù)據(jù)庫(kù)/ ThinkPHP 事務(wù)鎖

ThinkPHP 事務(wù)鎖

ThinkPHP 的 事務(wù)鎖 該怎么樣使用
在并發(fā)請(qǐng)求時(shí),生成的訂單會(huì)超過(guò)庫(kù)存
該怎怎么辦

function {
            ...
            // 查詢(xún)庫(kù)存
            ...
            // 用戶(hù)積分是否足夠
            ...
            // 生成訂單并扣除庫(kù)存

            ...
   }
回答
編輯回答
來(lái)守候

function {
1.開(kāi)啟事務(wù)

 // 查詢(xún)庫(kù)存(2.使用表鎖或者行鎖(防止高並發(fā)出現(xiàn)數(shù)據(jù)錯(cuò)誤,但性能消耗會(huì)高,推薦行鎖) 假如你這裡考慮到性能問(wèn)題,建議考慮使用nosql或者使用樂(lè)觀鎖。)
 // 用戶(hù)積分是否足夠(3.不夠就rollback)
 // 生成訂單并扣除庫(kù)存

4.提交事務(wù)
}

2017年4月26日 21:42
編輯回答
扯不斷

可以看看這個(gè)問(wèn)題:PHP高并發(fā)下單用事務(wù)可以解決嗎?

2018年2月15日 14:12
編輯回答
失心人

扣除庫(kù)存 和 生成訂單 都放在事務(wù)操作里面

function {
            ...
            // 查詢(xún)庫(kù)存
            ...
            // 用戶(hù)積分是否足夠
            //開(kāi)始事務(wù)
            ...
            // 生成訂單并
            
            //除庫(kù)存
             //提交事務(wù),失敗則回滾
            ...
   }
2017年10月23日 18:09