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模板技术[转]
Jan 04 PHP
实战mysql导出中文乱码及phpmyadmin导入中文乱码的解决方法
Jun 11 PHP
zend framework配置操作数据库实例分析
Dec 06 PHP
smarty模板中使用get、post、request、cookies、session变量的方法
Apr 24 PHP
php可生成缩略图的文件上传类实例
Dec 17 PHP
Yii实现自动加载类地图的方法
Apr 01 PHP
php实现微信发红包
Dec 05 PHP
smarty高级特性之过滤器的使用方法
Dec 25 PHP
AES加解密在php接口请求过程中的应用示例
Oct 26 PHP
AJAX的使用方法详解
Apr 29 PHP
PHP设计模式之注册树模式分析
Jan 26 PHP
php设计模式之装饰模式应用案例详解
Jun 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的日期与时间函数技巧
2008/04/24 PHP
PHP XML error parsing SOAP payload on line 1
2010/06/17 PHP
ubutu 16.04环境下,PHP与mysql数据库,网页登录验证实例讲解
2017/07/20 PHP
PHP类与对象后期静态绑定操作实例详解
2018/12/20 PHP
ie focus bug 解决方法
2009/09/03 Javascript
JavaScript prototype属性使用说明
2010/05/13 Javascript
JS控件的生命周期介绍
2012/10/22 Javascript
js单例模式的两种方案
2013/10/22 Javascript
javascript实现无限级select联动菜单
2015/01/02 Javascript
JS+CSS实现可拖拽的漂亮圆角特效弹出层完整实例
2015/02/13 Javascript
简介JavaScript中的getUTCFullYear()方法的使用
2015/06/10 Javascript
第一次接触神奇的Bootstrap网格系统
2016/07/27 Javascript
用jquery获取自定义的标签属性的值简单实例
2016/09/17 Javascript
基于JQuery的Ajax方法使用详解
2017/08/16 jQuery
解决js ajax同步请求造成浏览器假死的问题
2018/01/18 Javascript
Vue 开发音乐播放器之歌手页右侧快速入口功能
2018/08/08 Javascript
vue 使用axios 数据请求第三方插件的使用教程详解
2019/07/05 Javascript
vue 实现cli3.0中使用proxy进行代理转发
2019/10/30 Javascript
解决$store.getters调用不执行的问题
2019/11/08 Javascript
jquery css实现流程进度条
2020/03/26 jQuery
Vue(定时器)解决mounted不能获取到data中的数据问题
2020/07/30 Javascript
[08:08]2014DOTA2国际邀请赛中国区预选赛精彩TOPPLAY
2014/06/25 DOTA
python中类的一些方法分析
2014/09/25 Python
python实现数据写入excel表格
2018/03/25 Python
python实现超市扫码仪计费
2018/05/30 Python
python实现登录密码重置简易操作代码
2019/08/14 Python
python 解决flask uwsgi 获取不到全局变量的问题
2019/12/22 Python
PyCharm无法引用自身项目解决方式
2020/02/12 Python
python绘制雷达图实例讲解
2021/01/03 Python
Lancome兰蔻官方旗舰店:来自法国的世界知名美妆品牌
2018/06/14 全球购物
宝拉珍选英国官网:Paula’s Choice英国
2019/05/29 全球购物
《玩具柜台前的孩子》教学反思
2014/02/13 职场文书
法制报告会主持词
2014/04/02 职场文书
车辆工程专业求职信
2014/04/28 职场文书
国际贸易实务实训报告
2014/11/05 职场文书
MySQL的存储过程和相关函数
2022/04/26 MySQL