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

高洛峰
リリース: 2017-03-30 15:17:52
オリジナル
2338 人が閲覧しました

この記事の例では、同時実行状況でデータの重複を防ぐための 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 サイトに注目してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!