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 相关文章推荐
模仿OSO的论坛(四)
Oct 09 PHP
PHP下对字符串的递增运算代码
Aug 21 PHP
PHP对象转换为数组函数(递归方法)
Feb 04 PHP
php中sql注入漏洞示例 sql注入漏洞修复
Jan 24 PHP
如何让thinkphp在模型中自动完成session赋值小教程
Sep 05 PHP
CI框架中cookie的操作方法分析
Dec 12 PHP
PHP开启opcache提升代码性能
Apr 26 PHP
php自定义函数转换html标签示例
Sep 29 PHP
Yii框架中sphinx索引配置方法解析
Oct 18 PHP
php实现简单加入购物车功能
Mar 07 PHP
php利用ob_start()清除输出和选择性输出的方法
Jan 18 PHP
阿里云的WindowsServer2016上部署php+apache
Jul 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画图实例
2014/11/05 PHP
一页面多XMLHttpRequest对象
2007/01/22 Javascript
jquery.alert 弹出式复选框实现代码
2009/06/15 Javascript
jQuery validate 中文API 附validate.js中文api手册
2010/07/31 Javascript
自用js开发框架小成 学习js的朋友可以看看
2010/11/16 Javascript
javascript实现的固定位置悬浮窗口实例
2015/04/30 Javascript
javascript实现超炫的向上滑行菜单实例
2015/08/03 Javascript
jquery解析json格式数据的方法(对象、字符串)
2015/11/24 Javascript
js获取及判断键盘按键的方法
2015/12/01 Javascript
jQuery-mobile事件监听与用法详解
2016/11/23 Javascript
JavaScript 函数的定义-调用、注意事项
2017/04/16 Javascript
详解webpack进阶之插件篇
2017/07/06 Javascript
js使用generator函数同步执行ajax任务
2017/09/05 Javascript
Angular2仿照微信UI实现9张图片上传和预览的示例代码
2017/10/19 Javascript
详解RequireJs官方使用教程
2017/10/31 Javascript
JavaScript体验异步更好的解决办法
2018/01/08 Javascript
React Native 自定义下拉刷新上拉加载的列表的示例
2018/03/01 Javascript
jQuery创建折叠式菜单
2019/06/15 jQuery
ES6 Map结构的应用实例分析
2019/06/26 Javascript
JavaScript实现10秒后再次获取验证码
2020/12/02 Javascript
用C++封装MySQL的API的教程
2015/05/06 Python
python脚本替换指定行实现步骤
2017/07/11 Python
Python面向对象之接口、抽象类与多态详解
2018/08/27 Python
Python多线程threading模块用法实例分析
2019/05/22 Python
python numpy之np.random的随机数函数使用介绍
2019/10/06 Python
python使用openpyxl操作excel的方法步骤
2020/05/28 Python
html5 touch事件实现触屏页面上下滑动(一)
2016/03/10 HTML / CSS
shallow copy和deep copy的区别
2016/05/09 面试题
交通事故赔偿协议书范本
2014/04/15 职场文书
优秀团员事迹材料
2014/12/25 职场文书
初中运动会前导词
2015/07/20 职场文书
高中化学教学反思
2016/02/22 职场文书
2019银行员工个人工作自我鉴定
2019/06/27 职场文书
解决jupyter notebook图片显示模糊和保存清晰图片的操作
2021/04/24 Python
IDEA使用SpringAssistant插件创建SpringCloud项目
2021/06/23 Java/Android
蓝牙耳机怎么连接电脑win11? Win11蓝牙耳机连接电脑的技巧
2023/01/09 数码科技