Maison >php教程 >PHP开发 >Méthode de table de verrouillage Yii MYSQL pour éviter les données en double en simultanéité

Méthode de table de verrouillage Yii MYSQL pour éviter les données en double en simultanéité

高洛峰
高洛峰original
2017-03-30 15:17:522408parcourir

L'exemple de cet article décrit la méthode de la table de verrouillage Yii MYSQL pour éviter les données en double dans les situations de concurrence. Partagez-le avec tout le monde pour votre référence, comme suit :

lock table read lock

Si un thread acquiert un verrou en lecture sur une table, alors ce thread et tous les autres threads ne peuvent lire que les verrous de la table Lire les données, aucune opération d'écriture ne peut être effectuée.

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

verrouiller le verrou en écriture de la table

Si un thread obtient un verrou en écriture sur une table, alors seul le thread qui possède le verrou peut lire et écrire dans la table. D'autres fils de discussion sont bloqués.

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

Exemples d'utilisation dans 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;
}

J'espère que cet article sera utile à la conception de programmes PHP de chacun basés sur le framework Yii.

Pour plus de méthodes de table de verrouillage Yii MYSQL afin d'éviter les données en double dans les articles liés à la concurrence, veuillez faire attention au site Web PHP chinois !

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn