thinkphp5乐观锁抢购

发布时间:2022-01-25 09:56:30 阅读:1298次

thinkphp5乐观锁抢购

乐观锁是相对悲观锁而言的,乐观锁假设数据一般情况不会造成冲突,所以在数据进行提交更新的时候,才会正式对数据的冲突与否进行检测,如果冲突,则返回给用户异常信息,让用户决定如何去做。乐观锁适用于读多写少的场景,这样可以提高程序的吞吐量。

        DB::name('goods_order')->startTrans();
        $check = DB::name('goods_list')->field('goods_name,goods_number,sold_number')->where('id',1)->find();
        $num = $check['goods_number'];
        $version = $check['sold_number'];
        $res = Db::name('goods_list')->where('id',1)->where('sold_number',$version)->update(['goods_number'=>$num-1,'sold_number'=>$version+1]);
        $time = time();
        $sql = "INSERT INTO `goods_order` ( `sid`, `order_sn`, `username`, `goods_id`) VALUES (1, '20220123180655265788', '1381646', 1)";
        $res2 = Db::name('goods_order')->execute($sql);
        if($res && $num > 0 && $res2){
            DB::name('goods_order')->commit();
        }else{
            DB::name('goods_order')->rollback();
        }

如有问题,可以QQ搜索群1028468525加入群聊,欢迎一起研究技术

支付宝 微信

有疑问联系站长,请联系QQ:QQ咨询

转载请注明:thinkphp5乐观锁抢购 出自老鄢博客 | 欢迎分享