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 相关文章推荐
Apache, PHP在Windows 9x/NT下的安装与配置 (二)
Oct 09 PHP
支持中文和其他编码的php截取字符串函数分享(截取中文字符串)
Mar 13 PHP
ThinkPHP使用UTFWry地址库进行IP定位实例
Apr 01 PHP
ThinkPHP模板判断输出Present标签用法详解
Jun 30 PHP
PHP中isset与array_key_exists的区别实例分析
Jun 02 PHP
浅谈php错误提示及查错方法
Jul 14 PHP
php自定义函数实现JS的escape的方法示例
Jul 07 PHP
Thinkphp框架开发移动端接口(1)
Aug 18 PHP
关于ThinkPhp 框架表单验证及ajax验证问题
Jul 19 PHP
实例介绍PHP中zip_open()函数用法
Feb 15 PHP
Laravel框架创建路由的方法详解
Sep 04 PHP
PHP开启目录引索+fancyindex漂亮目录浏览带搜索功能
Sep 23 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代码
2007/03/03 PHP
php数组查找函数in_array()、array_search()、array_key_exists()使用实例
2014/04/29 PHP
PHP获取当前系统时间的方法小结
2018/10/03 PHP
JavaScript使用cookie
2007/02/02 Javascript
jQuery查询数据返回object和字符串影响原因是什么
2013/08/09 Javascript
网站繁简切换的JS遇到页面卡死的解决方法
2014/03/12 Javascript
跟我学Nodejs(二)--- Node.js事件模块
2014/05/21 NodeJs
node.js中的http.response.writeHead方法使用说明
2014/12/14 Javascript
js实现数字每三位加逗号的方法
2015/02/05 Javascript
jQuery获得指定元素坐标的方法
2015/04/14 Javascript
js实现模拟计算器退格键删除文字效果的方法
2015/05/07 Javascript
jQuery使用$.ajax进行异步刷新的方法(附demo下载)
2015/12/04 Javascript
js只执行1次的函数示例
2016/07/20 Javascript
Bootstrap和Angularjs配合自制弹框的实例代码
2016/08/24 Javascript
利用transition实现文字上下抖动的效果
2017/01/21 Javascript
Vue 单文件中的数据传递示例
2017/03/21 Javascript
JavaScript实现获取远程的html到当前页面中
2017/03/26 Javascript
微信小程序实现简单购物车功能
2020/12/30 Javascript
[04:31]2016国际邀请赛中国区预选赛妖精采访
2016/06/27 DOTA
tensorflow 1.0用CNN进行图像分类
2018/04/15 Python
Python实现针对给定字符串寻找最长非重复子串的方法
2018/04/21 Python
Python读取数据集并消除数据中的空行方法
2018/07/12 Python
解决Python获取字典dict中不存在的值时出错问题
2018/10/17 Python
Python2.7实现多进程下开发多线程示例
2019/05/31 Python
python实现动态数组的示例代码
2019/07/15 Python
美国领先的男士和女士内衣购物网站:Freshpair
2019/02/25 全球购物
幼儿园长自我鉴定
2013/10/17 职场文书
房地产销售经理岗位职责
2014/01/01 职场文书
小学节能减排倡议书
2014/05/15 职场文书
党的群众教育实践活动实施方案
2014/06/12 职场文书
快递员岗位职责
2014/09/12 职场文书
婚姻出轨保证书
2015/05/08 职场文书
2015年度残疾人工作总结
2015/05/14 职场文书
比较几种Redis集群方案
2021/06/21 Redis
php双向队列实例讲解
2021/11/17 PHP
Python通过loop.run_in_executor执行同步代码 同步变为异步
2022/04/11 Python