Yii+MYSQL锁表防止并发情况下重复数据的方法


Posted in PHP onJuly 14, 2016

本文实例讲述了Yii+MYSQL锁表防止并发情况下重复数据的方法。分享给大家供大家参考,具体如下:

lock table 读锁定

如果一个线程获得在一个表上的read锁,那么该线程和所有其他线程只能从表中读数据,不能进行任何写操作。

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

lock table 写锁定

如果一个线程在一个表上得到一个 write锁,那么只有拥有这个锁的线程可以从表中读取和写表。其它的线程被阻塞。

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程序设计有所帮助。

PHP 相关文章推荐
phpmyadmin的#1251问题
Nov 25 PHP
基于HTTP长连接的"服务器推"技术的php 简易聊天室
Oct 31 PHP
php GeoIP的使用教程
Mar 09 PHP
php代码中使用换行及(\n或\r\n和br)的应用
Feb 02 PHP
PHP中Session引起的脚本阻塞问题解决办法
Apr 08 PHP
php中file_get_content 和curl以及fopen 效率分析
Sep 19 PHP
php的mssql数据库连接类实例
Nov 28 PHP
PHP解析RSS的方法
Mar 05 PHP
php递归遍历删除文件的方法
Apr 17 PHP
PHP最常用的正则表达式
Feb 13 PHP
PHP+百度AI OCR文字识别实现了图片的文字识别功能
May 08 PHP
laravel 5.5 关闭token的3种实现方式
Oct 24 PHP
Yii实现的多级联动下拉菜单
Jul 13 #PHP
YII视图整合kindeditor扩展的方法
Jul 13 #PHP
Yii+upload实现AJAX上传图片的方法
Jul 13 #PHP
Yii安装与使用Excel扩展的方法
Jul 13 #PHP
Yii配置与使用memcached缓存的方法
Jul 13 #PHP
Yii使用smsto短信接口的函数demo示例
Jul 13 #PHP
PHP实现自动识别原编码并对字符串进行编码转换的方法
Jul 13 #PHP
You might like
PHP编程函数安全篇
2013/01/08 PHP
Yii框架自定义数据库操作组件示例
2019/11/11 PHP
JavaScript与Div对层定位和移动获得坐标的实现代码
2010/09/08 Javascript
jQuery获取Radio,CheckBox选择的Value值(示例代码)
2013/12/12 Javascript
js生成随机数之random函数随机示例
2013/12/20 Javascript
js获取当前页面路径示例讲解
2014/01/08 Javascript
jQuery插件formValidator自定义函数扩展功能实例详解
2015/11/25 Javascript
javascript中select下拉框的用法总结
2016/01/07 Javascript
js实现字符串和数组之间相互转换操作
2016/01/12 Javascript
Javascript的无new构建实例详解
2016/05/15 Javascript
seajs学习教程之基础篇
2016/10/20 Javascript
angular中实现控制器之间传递参数的方式
2017/04/24 Javascript
Angularjs自定义指令Directive详解
2017/05/27 Javascript
VUE中的无限循环代码解析
2017/09/22 Javascript
AngularJS实现注册表单验证功能
2017/10/16 Javascript
bootstrap table sum总数量统计实现方法
2017/10/29 Javascript
canvas绘制爱心的几种方法总结(推荐)
2017/10/31 Javascript
使用ESLint禁止项目导入特定模块的方法步骤
2019/03/04 Javascript
vue中axios封装使用的完整教程
2021/03/03 Vue.js
使用httplib模块来制作Python下HTTP客户端的方法
2015/06/19 Python
Python的迭代器和生成器
2015/07/29 Python
python中退出多层循环的方法
2018/11/27 Python
用Pytorch训练CNN(数据集MNIST,使用GPU的方法)
2019/08/19 Python
从numpy数组中取出满足条件的元素示例
2019/11/26 Python
在Anaconda3下使用清华镜像源安装TensorFlow(CPU版)
2020/04/19 Python
python中lower函数实现方法及用法讲解
2020/12/23 Python
北美最大的参茸药食商城:德成行
2020/12/06 全球购物
个人自我鉴定范文
2013/10/04 职场文书
你懂得怎么写自荐信吗?
2013/12/27 职场文书
六个一活动实施方案
2014/03/21 职场文书
志愿者活动总结报告
2014/06/27 职场文书
毕业生班级鉴定评语
2015/01/04 职场文书
继承公证书格式
2015/01/26 职场文书
2016年第32个教师节红领巾广播稿
2015/12/18 职场文书
Python基础之教你怎么在M1系统上使用pandas
2021/05/08 Python
解决Vmware虚拟机安装centos8报错“Section %Packages Does Not End With %End. Pane Is Dead”
2022/06/01 Servers