用户余额扣除这种加锁方式是否可行?

浏览:1164 发布日期:2018/07/28 分类:求助交流
//扣除某用户购物积分rp
public static function delAccbalance_rp($uid = "",$money = 0)
{

$oldmoney = (int)self::getAccbalance_rp($uid);
$newmoney = $oldmoney - $money;
$lock = self::where('user_id',$uid)->find()->getData('accbalance_lock');
if($lock) //如果正在使用锁,lock=true,不让其他用户写
{
return false;
}else{
return self::where('user_id',$uid)->update(['accbalance_rp'=>$newmoney]);
}
//释放锁
self::where('user_id',$uid)->update(['accbalance_lock'=>0]);
}

我在余额表里面,加了一个锁字段,accbalance_lock,上锁是1,解锁是0。

这么做有必要吗?我前面已经开启了php事务(Db::startTrans(); //开启事务),总感觉不放心,又整个这种的。
最佳答案
评论( 相关
后面还有条评论,点击查看>>