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 数组实例说明
Aug 18 PHP
PHP开发中常用的8个小技巧
Aug 27 PHP
7个超级实用的PHP代码片段
Jul 11 PHP
yii上传文件或图片实例
Apr 01 PHP
php实现的简易扫雷游戏实例
Jul 09 PHP
PHP对象、模式与实践之高级特性分析
Dec 08 PHP
ThinkPHP删除栏目(实现批量删除栏目)
Jun 21 PHP
Laravel框架实现的记录SQL日志功能示例
Jun 19 PHP
PHP实现普通hash分布式算法简单示例
Aug 06 PHP
PHP join()函数用法与实例讲解
Mar 11 PHP
简单实用的PHP文本缓存类实例
Mar 22 PHP
使用PHP开发留言板功能
Nov 19 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
咖啡的化学
2021/03/03 咖啡文化
php 文件夹删除、php清除缓存程序
2009/08/25 PHP
PHP合并数组+与array_merge的区别分析
2010/08/01 PHP
php socket客户端及服务器端应用实例
2014/07/04 PHP
php 二维数组时间排序实现代码
2016/11/19 PHP
php封装json通信接口详解及实例
2017/03/07 PHP
基于jquery的cookie的用法
2011/01/10 Javascript
另一个javascript小测验(代码集合)
2011/07/27 Javascript
jQuery学习笔记(1)--用jQuery实现异步通信(用json传值)具体思路
2013/04/08 Javascript
JavaScript学习笔记之创建对象
2016/03/25 Javascript
Javascript for in的缺陷总结
2017/02/03 Javascript
JavaScript实现三级联动效果
2017/07/15 Javascript
深入理解vue.js中$watch的oldvalue与newValue
2017/08/07 Javascript
Three.js如何用轨迹球插件(trackball)增加对模型的交互功能详解
2017/09/25 Javascript
VSCode配置react开发环境的步骤
2017/12/27 Javascript
JS运算符简单用法示例
2020/01/19 Javascript
在Django的session中使用User对象的方法
2015/07/23 Python
简单谈谈Python流程控制语句
2016/12/04 Python
python统计多维数组的行数和列数实例
2018/06/23 Python
使用PyCharm创建Django项目及基本配置详解
2018/10/24 Python
Django管理员账号和密码忘记的完美解决方法
2018/12/06 Python
Python类中的魔法方法之 __slots__原理解析
2019/08/26 Python
python中使用paramiko模块并实现远程连接服务器执行上传下载功能
2020/02/29 Python
Python数组拼接np.concatenate实现过程
2020/04/18 Python
详解Python爬虫爬取博客园问题列表所有的问题
2021/01/18 Python
HTML5响应式(自适应)网页设计的实现
2017/11/17 HTML / CSS
Dr. Martens马汀博士澳大利亚官网:马丁靴鼻祖
2019/07/02 全球购物
什么是Smarty变量操作符?如何使用Smarty变量操作符
2014/07/18 面试题
乡镇干部十八大感言
2014/02/17 职场文书
学生请假条
2014/04/11 职场文书
党员群众路线学习心得体会
2014/11/04 职场文书
先进党组织事迹材料
2014/12/26 职场文书
工程技术员岗位职责
2015/04/11 职场文书
2015年小学远程教育工作总结
2015/07/28 职场文书
化工生产实习心得体会
2016/01/22 职场文书
2019客服个人年终工作总结范文
2019/07/08 职场文书