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 相关文章推荐
《PHP边学边教》(04.编写简易的通讯录――视频教程1)
Dec 13 PHP
php Undefined index和Undefined variable的解决方法
Mar 27 PHP
防止MySQL注入或HTML表单滥用的PHP程序
Jan 21 PHP
php函数的常用方法及注意之处小结
Jul 10 PHP
php安全配置 如何配置使其更安全
Dec 16 PHP
避免Smarty与CSS语法冲突的方法
Mar 02 PHP
PHP简单实现断点续传下载的方法
Sep 25 PHP
PHP快速生成各种信息提示框的方法
Feb 03 PHP
mysql查找删除重复数据并只保留一条实例详解
Sep 24 PHP
thinkPHP显示不出验证码的原因与解决方法分析
May 20 PHP
PHP命令空间namespace及use的用法小结
Nov 27 PHP
原生PHP实现导出csv格式Excel文件的方法示例【附源码下载】
Mar 07 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计算整个目录大小的方法
2015/06/01 PHP
PHP 年月日的三级联动实例代码
2017/05/24 PHP
firefox下frameset取不到值的解决方法
2010/09/06 Javascript
后台获取ZTREE选中节点的方法
2015/02/12 Javascript
JS中捕获console.log()输出的方法
2015/04/16 Javascript
jQuery实现批量判断表单中文本框非空的方法(2种方法)
2015/12/09 Javascript
Markdown与Bootstrap相结合实现图片自适应属性
2016/05/04 Javascript
jQuery解决input元素的blur事件和其他非表单元素的click事件冲突问题
2016/08/15 Javascript
JavaScript String(字符串)对象的简单实例(推荐)
2016/08/31 Javascript
webpack常用配置项配置文件介绍
2016/11/07 Javascript
Angular.js中ng-if、ng-show和ng-hide的区别介绍
2017/01/20 Javascript
vue 子组件向父组件传值方法
2018/02/26 Javascript
layer.open 按钮的点击事件关闭方法
2018/08/17 Javascript
微信公众号获取用户地理位置并列出附近的门店的示例代码
2019/07/25 Javascript
JavaScript实现移动端弹窗后禁止滚动
2020/05/25 Javascript
解决VUE项目localhost端口服务器拒绝连接,只能用127.0.0.1的问题
2020/08/14 Javascript
[03:48]DOTA2完美大师赛主赛事第二日精彩集锦
2017/11/24 DOTA
Python Requests安装与简单运用
2016/04/07 Python
python3.4用函数操作mysql5.7数据库
2017/06/23 Python
Python字符串格式化的方法(两种)
2017/09/19 Python
Django rest framework基本介绍与代码示例
2018/01/26 Python
python selenium 对浏览器标签页进行关闭和切换的方法
2018/05/21 Python
Python图片的横坐标汉字实例
2019/12/04 Python
PageFactory设计模式基于python实现
2020/04/14 Python
使用Keras中的ImageDataGenerator进行批次读图方式
2020/06/17 Python
怎么处理XML的中文问题
2015/03/26 面试题
快餐店的创业计划书范文
2014/01/29 职场文书
经典婚礼主持词
2014/03/13 职场文书
预备党员对照检查材料思想汇报
2014/09/24 职场文书
简易离婚协议书范本
2014/10/24 职场文书
学习普通话的体会
2014/11/07 职场文书
2014年财政局工作总结
2014/12/09 职场文书
保护校园环境倡议书
2015/04/28 职场文书
详解使用 CSS prefers-* 规范提升网站的可访问性与健壮性
2021/05/25 HTML / CSS
k8s部署redis cluster集群的实现
2021/06/24 Redis
SpringBoot详解自定义Stater的应用
2022/07/15 Java/Android