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的面向对象编程
Oct 09 PHP
深入解析php中的foreach函数
Aug 31 PHP
thinkphp实现多语言功能(语言包)
Mar 04 PHP
PHP使用GIFEncoder类处理gif图片实例
Jul 01 PHP
PHP Try-catch 语句使用技巧
Feb 28 PHP
Yii2实现上下联动下拉框功能的方法
Aug 10 PHP
php实现的网页版剪刀石头布游戏示例
Nov 25 PHP
浅谈socket同步和异步、阻塞和非阻塞、I/O模型
Dec 15 PHP
laravel 5.4 + vue + vux + element的环境搭配过程介绍
Apr 26 PHP
PHP使用glob方法遍历文件夹下所有文件的实例
Oct 17 PHP
关于php开启错误提示的总结
Sep 24 PHP
PhpStorm2020.1 安装 debug - Postman 调用的详细教程
Aug 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://output和php://stdout的区别
2018/05/06 PHP
JS代码格式化和语法着色V2
2006/10/14 Javascript
jQuery 获取URL参数的插件
2010/03/04 Javascript
基于jquery的lazy loader插件实现图片的延迟加载[简单使用]
2011/05/07 Javascript
浅析JS中document对象的一些重要属性
2014/03/06 Javascript
分享2个jQuery插件--jquery.fileupload与artdialog
2014/12/26 Javascript
JQuery中extend的用法实例分析
2015/02/08 Javascript
简单的JS时钟实例讲解
2016/01/13 Javascript
jQuery中数据缓存$.data的用法及源码完全解析
2016/04/29 Javascript
基于jquery实现图片放大功能
2016/05/07 Javascript
深入理解$.each和$(selector).each
2016/05/15 Javascript
jquery 正整数数字校验正则表达式
2017/01/10 Javascript
php简单数据库操作类的封装
2017/06/08 Javascript
浅谈node模块与npm包管理工具
2018/01/03 Javascript
JS实现中英文混合文字溢出友好截取功能
2018/08/06 Javascript
JavaScript中创建原子的方法总结
2018/08/26 Javascript
详解jQuery-each()方法
2019/03/13 jQuery
layui form表单提交后实现自动刷新
2019/10/25 Javascript
从零使用TypeScript开发项目打包发布到npm
2020/02/14 Javascript
vue-i18n实现中英文切换的方法
2020/07/06 Javascript
Openlayers绘制聚合标注
2020/09/28 Javascript
在Python中使用lambda高效操作列表的教程
2015/04/24 Python
微信跳一跳自动运行python脚本
2018/01/08 Python
Python爬虫框架scrapy实现的文件下载功能示例
2018/08/04 Python
python selenium爬取斗鱼所有直播房间信息过程详解
2019/08/09 Python
python re模块常见用法例举
2021/03/01 Python
日本PLST在线商店:日本时尚杂志刊载的人气服装
2016/12/10 全球购物
个人找工作自荐信格式
2013/09/21 职场文书
大学新生军训个人的自我评价
2013/10/03 职场文书
加入学生会演讲稿
2014/04/24 职场文书
房屋出售授权委托书
2014/10/12 职场文书
六查六看心得体会
2014/10/14 职场文书
管理失职检讨书范文
2015/05/05 职场文书
上诉答辩状范文
2015/05/22 职场文书
离职证明范本
2015/06/12 职场文书
Pytest实现setup和teardown的详细使用详解
2021/04/17 Python