>  기사  >  php教程  >  동시성에서 중복 데이터를 방지하기 위한 Yii+MYSQL 테이블 잠금 방법

동시성에서 중복 데이터를 방지하기 위한 Yii+MYSQL 테이블 잠금 방법

高洛峰
高洛峰원래의
2017-03-30 15:17:522318검색

이 글의 예시에서는 동시 상황에서 데이터 중복을 방지하기 위한 Yii+MYSQL 잠금 테이블 방법을 설명합니다. 다음과 같이 참조용으로 모든 사람과 공유하십시오.

테이블 읽기 잠금 잠금

스레드가 테이블에 대한 읽기 잠금을 획득하면 이 스레드와 다른 모든 스레드는 테이블에서 잠금을 읽을 수만 있습니다. 테이블 읽기 데이터, 쓰기 작업을 수행할 수 없습니다.

lock tables user read;//读锁定表
unlock tables;//解锁
lock tables user read local;//本地读锁定表,其他线程的insert未被阻塞,update操作被阻塞

lock table write lock

스레드가 테이블에 대한 쓰기 잠금을 얻으면 잠금을 소유한 스레드만 테이블에서 읽고 쓸 수 있습니다. 다른 스레드는 차단됩니다.

lock tables user write;//写锁定表
unlock tables;//解锁

Yii의 사용 예

/**
* 当日单项内容状态
*/
public function getPointAready($marke,$dayTime){
  $model = SysRun::model()->findByAttributes(array('syr_marking'=>$marke,'syr_daytime'=>$dayTime));
  if(empty($model)){
    //表写锁定
    Yii::app()->db->createCommand()->setText("lock tables {{sys_run}} WRITE")->execute();
    $model = new SysRun();
    $model->syr_marking = $marke;
    $model->syr_daytime = $dayTime;
    $model->syr_val = 0;
    $model->syr_subval = 0;
    $model->save();
    //表解锁
    Yii::app()->db->createCommand()->setText("unlock tables")->execute();
  }
  return $model;
}

이 기사가 Yii 프레임워크를 기반으로 하는 모든 사람의 PHP 프로그램 설계에 도움이 되기를 바랍니다.

동시성에서 중복 데이터를 방지하기 위한 Yii+MYSQL 테이블 잠금 방법에 대한 더 많은 관련 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.