控制并发

  1. select for update 原子性来限制, memcache add 原子性

  2. 敏感资源,记录日志,不要回滚。尽量用日志记录

使用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
}

推荐阅读更多精彩内容