2.锁定进程如果采用的是lock( 'lock in share mode'),在该进程执行过程中(未完成),有任何其他更新操作都是无效的、直到锁定进程完成后依然会报错锁定更新。
/**
* 锁定测试
*/
public function lock(){
set_time_limit(0);
//开启事务
Db::startTrans();
try{
//查询时锁定 关键行(该行不能再被其他修改) 'lock in share mode'
$rs = Member::where("username = 'veitool'")->lock(true)->find();
sleep(10);
Db::name('member')->where("username = 'veitool'")->update(['money' => '10']);
//提交事务
Db::commit();
return '成功!';
}catch(\Exception $e){
//回滚事务
Db::rollback();
return '失败:'.$e;
}
}
/**
* 其他更新
*/
public function locks(){
set_time_limit(0);
//$rs = Member::where("username = 'veitool'")->lock(true)->find();
Db::name('member')->where("username = 'veitool'")->inc('money', 8.60)->update();
return '成功!';
}
最佳答案
