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 相关文章推荐
如何分别全角和半角以避免乱码
Oct 09 PHP
PHP里的中文变量说明
Jul 23 PHP
PHP图片裁剪函数(保持图像不变形)
May 04 PHP
PHP实现将视频转成MP4并获取视频预览图的方法
Mar 12 PHP
Yii中CArrayDataProvider和CActiveDataProvider区别实例分析
Mar 02 PHP
PHP弱类型的安全问题详细总结
Sep 25 PHP
mac os快速切换多个PHP版本的方法
Mar 07 PHP
php制作圆形用户头像的实例_自定义封装类源代码
Sep 18 PHP
php解决约瑟夫环算法实例分析
Sep 30 PHP
Laravel 微信小程序后端搭建步骤详解
Nov 26 PHP
php7 错误处理机制修改实例分析
May 25 PHP
PHP安装扩展mcrypt以及相关依赖项深入讲解
Mar 04 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+JS无限级可伸缩菜单详解(简单易懂)
2007/01/02 PHP
VIM中设置php自动缩进为4个空格的方法详解
2013/06/14 PHP
php中Socket创建与监听实现方法
2015/01/05 PHP
谈谈从phpinfo中能获取哪些值得注意的信息
2017/03/28 PHP
解决Yii2邮件发送结果返回成功,但接收不到邮件的问题
2017/05/23 PHP
PHP设计模式之单例模式定义与用法分析
2019/03/26 PHP
利用javascript移动div层-javascript 拖动层
2009/03/22 Javascript
Javascript类库的顶层对象名用户体验分析
2010/10/24 Javascript
读jQuery之十 事件模块概述
2011/06/27 Javascript
JavaScript判断变量是否为undefined的两种写法区别
2013/12/04 Javascript
js判断元素是否隐藏的方法
2014/06/09 Javascript
node.js [superAgent] 请求使用示例
2015/03/13 Javascript
javascript实现通过表格绘制颜色填充矩形的方法
2015/04/21 Javascript
详解JavaScript中this关键字的用法
2016/05/26 Javascript
全面解析Bootstrap中transition、affix的使用方法
2016/05/30 Javascript
jquery轮播的实现方式 附完整实例
2016/07/28 Javascript
Vue-cli创建项目从单页面到多页面的方法
2017/09/20 Javascript
详解JavaScript 中 if / if...else...替换方式
2018/07/15 Javascript
JQuery搜索框自动补全(模糊匹配)功能实现示例
2019/01/08 jQuery
Js视频播放器插件Video.js使用方法详解
2020/02/04 Javascript
JavaScript console的使用方法实例分析
2020/04/28 Javascript
微信小程序拖拽排序列表的示例代码
2020/07/08 Javascript
Nuxt.js的路由跳转操作(页面跳转nuxt-link)
2020/11/06 Javascript
Zabbix实现微信报警功能
2016/10/09 Python
python 专题九 Mysql数据库编程基础知识
2017/03/16 Python
python3 shelve模块的详解
2017/07/08 Python
python实现贪吃蛇游戏
2020/03/21 Python
Django在Model保存前记录日志实例
2020/05/14 Python
基于python爬取梨视频实现过程解析
2020/11/09 Python
HTML5的结构和语义(1):前言
2008/10/17 HTML / CSS
传统软件工程与面向对象的软件工程有什么区别
2012/05/31 面试题
机电一体化职业规划书
2014/01/07 职场文书
环卫工人先进事迹材料
2014/06/02 职场文书
销售代理协议书
2014/09/30 职场文书
Nest.js参数校验和自定义返回数据格式详解
2021/03/29 Javascript
mysql优化
2021/04/06 MySQL