select for update 原子性来限制, memcache add 原子性
敏感资源,记录日志,不要回滚。尽量用日志记录
使用SQL update的原子性进行并发控制:
$result = RedPackLog::model()->updateAll(
array('version'=>1),
'id=88 and version=:t_v',
array(':t_v'=>0)
);
if($result){
$command = exec('echo 123 >> /var/www/123.txt');
}
使用memcache add的原子性加锁
if(Yii::app()->memcache->add($key, 1, 60)) {
// TODO
}