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和XSL stylesheets转换XML文档
Oct 09 PHP
深入了解php4(2)--重访过去
Oct 09 PHP
PHP中array_merge和array相加的区别分析
Jun 17 PHP
php 去除html标记--strip_tags与htmlspecialchars的区别详解
Jun 26 PHP
如何使用PHP实现javascript的escape和unescape函数
Jun 29 PHP
Apache实现Web Server负载均衡详解(不考虑Session版)
Jul 05 PHP
php+js实现异步图片上传实例分享
Jun 02 PHP
YII中assets的使用示例
Jul 31 PHP
php过滤html标记属性类用法实例
Sep 23 PHP
PHP遍历XML文档所有节点的方法
Mar 12 PHP
php的crc32函数使用时需要注意的问题(不然就是坑)
Apr 21 PHP
Django 标签筛选的实现代码(一对多、多对多)
Sep 05 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
thinkphp实现多语言功能(语言包)
2014/03/04 PHP
PHP中的排序函数sort、asort、rsort、krsort、ksort区别分析
2014/08/18 PHP
ThinkPHP中关联查询实例
2014/12/02 PHP
PHP命令行执行整合pathinfo模拟定时任务实例
2016/08/12 PHP
Yii2压缩PHP中模板代码的输出问题
2018/08/28 PHP
javascript 基础篇3 类,回调函数,内置对象,事件处理
2012/03/14 Javascript
jQuery 的全选(全非选)即取得被选中的值使用介绍
2013/11/12 Javascript
jQuery窗口、文档、网页各种高度的精确理解
2014/07/02 Javascript
简单实现js页面切换功能
2021/01/10 Javascript
深入浅析knockout源码分析之订阅
2016/07/12 Javascript
JavaScript中利用构造器函数模拟类的方法
2017/02/16 Javascript
jQuery操作css样式
2017/05/15 jQuery
angular框架实现全选与单选chekbox的自定义
2017/07/06 Javascript
angular实现spa单页面应用实例
2017/07/10 Javascript
基于Vue的SPA动态修改页面title的方法(推荐)
2018/01/02 Javascript
JS文件中加载jquery.js的实例代码
2018/05/05 jQuery
jQuery 实现倒计时天,时,分,秒功能
2018/07/31 jQuery
js获取浏览器地址(获取第1个斜杠后的内容)
2019/09/03 Javascript
Python采用raw_input读取输入值的方法
2014/08/18 Python
python错误:AttributeError: 'module' object has no attribute 'setdefaultencoding'问题的解决方法
2014/08/22 Python
python多线程编程中的join函数使用心得
2014/09/02 Python
python文件写入实例分析
2015/04/08 Python
python 简单搭建阻塞式单进程,多进程,多线程服务的实例
2017/11/01 Python
多个应用共存的Django配置方法
2018/05/30 Python
python argparser的具体使用
2019/11/10 Python
Python通过递归函数输出嵌套列表元素
2020/10/15 Python
python 实现波浪滤镜特效
2020/12/02 Python
HTML5 embed 标签使用方法介绍
2013/08/13 HTML / CSS
纽约服装和生活方式品牌:Saturdays NYC
2017/08/13 全球购物
Unix里面如何在后台运行程序
2016/10/14 面试题
旷课检讨书大全
2014/01/21 职场文书
田径运动会开幕式及主持词
2014/03/28 职场文书
土建施工员岗位职责
2015/04/11 职场文书
盗窃罪辩护词范文
2015/05/21 职场文书
2022漫威和DC电影上映作品
2022/04/05 欧美动漫
Go调用Rust方法及外部函数接口前置
2022/06/14 Golang