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中随机显示图片的函数代码
Jun 23 PHP
基于PHP生成静态页的实现方法
May 10 PHP
领悟php接口中interface存在的意义
Jun 27 PHP
浅析PHP Socket技术
Aug 02 PHP
教你如何用php实现LOL数据远程获取
Jun 10 PHP
php使用cookie显示用户上次访问网站日期的方法
Jan 26 PHP
php计算到指定日期还有多少天的方法
Apr 14 PHP
CodeIgniter常用知识点小结
May 26 PHP
PHP进程通信基础之信号
Feb 19 PHP
PHP实现更改hosts文件的方法示例
Aug 08 PHP
Laravel学习教程之View模块详解
Sep 18 PHP
laravel ajax curd 搜索登录判断功能的实现
Apr 17 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如何将日志写进syslog
2013/06/28 PHP
PHP实现手机号码中间四位用星号(*)隐藏的自定义函数分享
2014/09/27 PHP
Yii框架页面渲染操作实例详解
2019/07/19 PHP
defer属性导致引用JQuery的页面报“浏览器无法打开网站xxx,操作被中止”错误的解决方法
2010/04/27 Javascript
一个基于jquery的图片切换效果
2010/07/06 Javascript
javascript中的document.open()方法使用介绍
2013/10/09 Javascript
JavaScript中使用stopPropagation函数停止事件传播例子
2014/08/27 Javascript
JavaScript按值删除数组元素的方法
2015/04/24 Javascript
js随机生成26个大小写字母
2016/02/12 Javascript
javascript的列表切换【实现代码】
2016/05/03 Javascript
jQuery插件实现文件上传功能(支持拖拽)
2020/08/27 Javascript
AngularJS入门教程之双向绑定详解
2016/08/18 Javascript
简单分析javascript中的函数
2016/09/10 Javascript
详解vue-Resource(与后端数据交互)
2017/01/16 Javascript
Bootstrap栅格系统使用方法及页面调整变形的解决方法
2017/03/10 Javascript
nodejs个人博客开发第六步 数据分页
2017/04/12 NodeJs
JavaScript中关于base64的一些事
2019/05/06 Javascript
基于iview的router常用控制方式
2019/05/30 Javascript
记录微信小程序 height: calc(xx - xx);无效问题
2019/12/30 Javascript
webpack3.0升级4.0的方法步骤
2020/04/02 Javascript
django文档学习之applications使用详解
2018/01/29 Python
Python线程障碍对象Barrier原理详解
2019/12/02 Python
Python 模拟生成动态产生验证码图片的方法
2020/02/01 Python
在python tkinter界面中添加按钮的实例
2020/03/04 Python
Python自动化测试基础必备知识点总结
2021/02/07 Python
运动鞋中的劳斯莱斯:索康尼(SAUCONY)
2017/08/09 全球购物
Johnson Fitness澳大利亚:高级健身器材
2021/03/16 全球购物
Linux如何命名文件--使用文件名时应注意
2014/05/29 面试题
国际贸易专业推荐信
2013/11/15 职场文书
部队万能检讨书
2014/02/20 职场文书
公司聘任书模板
2014/03/29 职场文书
《放小鸟》教学反思
2014/04/20 职场文书
微笑服务演讲稿
2014/05/13 职场文书
皇城相府导游词
2015/02/06 职场文书
机关干部作风整顿心得体会
2016/01/22 职场文书
2016年感恩节活动总结大全
2016/04/01 职场文书