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 !