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极大的增强功能和性能
Oct 09 PHP
PHP开发文件系统实例讲解
Oct 09 PHP
珊瑚虫IP库浅析
Feb 15 PHP
php 面试碰到过的问题 在此做下记录
Jun 09 PHP
php中autoload的用法总结
Nov 08 PHP
php实现的太平洋时间和北京时间互转的自定义函数分享
Aug 19 PHP
php通过文件流方式复制文件的方法
Mar 13 PHP
PHP自带方法验证邮箱是否存在
Feb 01 PHP
PHP 数组基本操作小结(推荐)
Jun 13 PHP
PHP单元测试框架PHPUnit用法详解
Jan 23 PHP
详解如何实现Laravel的服务容器的方法示例
Apr 15 PHP
php报错502badgateway解决方法
Oct 11 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函数
2006/10/09 PHP
require(),include(),require_once()和include_once()的异同
2007/01/02 PHP
php 进度条实现代码
2009/03/10 PHP
php中filter_input函数用法分析
2014/11/15 PHP
thinkphp3.x中display方法及show方法的用法实例
2016/05/19 PHP
PHP 闭包详解及实例代码
2016/09/28 PHP
php 根据自增id创建唯一编号类
2017/04/06 PHP
PHP实现webshell扫描文件木马的方法
2017/07/31 PHP
thinkPHP5.0框架验证码调用及点击图片刷新简单实现方法
2018/09/07 PHP
关于php开启错误提示的总结
2019/09/24 PHP
JS 学习笔记 防止发生命名冲突
2009/07/30 Javascript
javascript对话框使用方法(警告框 javascript确认框 提示框)
2014/01/07 Javascript
php is_numberic函数造成的SQL注入漏洞
2014/03/10 Javascript
jquery配合.NET实现点击指定绑定数据并且能够一键下载
2016/10/28 Javascript
JS 实现导航菜单中的二级下拉菜单的几种方式
2016/10/31 Javascript
单击按钮发送验证码,出现倒计时的简单实例
2017/03/17 Javascript
nodejs搭建本地服务器并访问文件操作示例
2019/05/11 NodeJs
laypage+SpringMVC实现后端分页
2019/07/27 Javascript
在Webpack中用url-loader处理图片和字体的问题
2020/04/28 Javascript
JavaScript禁止右击保存图片,禁止拖拽图片的实现代码
2020/04/28 Javascript
[52:06]完美世界DOTA2联赛决赛日 Inki vs LBZS 第一场 11.08
2020/11/10 DOTA
python下setuptools的安装详解及No module named setuptools的解决方法
2017/07/06 Python
go和python变量赋值遇到的一个问题
2017/08/31 Python
基于python OpenCV实现动态人脸检测
2018/05/25 Python
python 寻找list中最大元素对应的索引方法
2018/06/28 Python
python生成lmdb格式的文件实例
2018/11/08 Python
Django多数据库配置及逆向生成model教程
2020/03/28 Python
CSS3 media queries + jQuery实现响应式导航
2016/09/30 HTML / CSS
大学生饮食配送创业计划书
2014/01/04 职场文书
创业培训计划书
2014/05/03 职场文书
财务管理专业求职信
2014/06/11 职场文书
维稳工作情况汇报
2014/10/27 职场文书
欠款证明
2015/06/24 职场文书
利用python做表格数据处理
2021/04/13 Python
golang通过递归遍历生成树状结构的操作
2021/04/28 Golang
俄罗斯十大城市人口排名,第三首都仅排第六,第二是北方首都
2022/03/20 杂记