大概就是 mysql的一张表存放着某个用户的余额,下面我写伪代码了。
$sql=select * from user wherer 余额 > 10 and id=1;
//如果有余额进行逻辑处理最后在减去扣款。
if($sql){
echo '请求它接口';
$sql=update user set 余额=余额-10;//关键就在这里了,如果减完了就相当于没余额了,但是由于并发,第二个人查询的时候是有的,他也进了这个条件。怎么避免这种情况
}else{
echo '余额不足';
}
2种解决办法:”for update“的悲观锁,或者使用”版本号“的乐观锁,http://segmentfault.com/q/1010000002905539