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

ThinkPHP 事務(wù)鎖

ThinkPHP 的 事務(wù)鎖 該怎么樣使用
在并發(fā)請求時,生成的訂單會超過庫存
該怎怎么辦

function {
            ...
            // 查詢庫存
            ...
            // 用戶積分是否足夠
            ...
            // 生成訂單并扣除庫存

            ...
   }
回答
編輯回答
來守候

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

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

4.提交事務(wù)
}

2017年4月26日 21:42
編輯回答
扯不斷
2018年2月15日 14:12
編輯回答
失心人

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

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