ホームページ  >  記事  >  php教程  >  Yii+MYSQL ロックテーブルメソッドによる同時実行時の重複データの防止

Yii+MYSQL ロックテーブルメソッドによる同時実行時の重複データの防止

高洛峰
高洛峰オリジナル
2017-03-30 15:17:522354ブラウズ

この記事の例では、同時実行状況でデータの重複を防ぐための Yii+MYSQL ロックテーブルの方法を説明します。参考までに皆さんと共有してください。詳細は次のとおりです:

ロックテーブル読み取りロック

スレッドがテーブルの読み取りロックを取得した場合、このスレッドと他のすべてのスレッドはテーブルからデータを読み取ることのみができ、実行できませんあらゆる書き込み操作。

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

ロック テーブル書き込みロック

スレッドがテーブルの書き込みロックを取得すると、そのロックを所有するスレッドのみがテーブルの読み取りと書き込みを行うことができます。他のスレッドはブロックされています。

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 中国語 Web サイトに注目してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。