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函数之error_reporting(E_ALL ^ E_NOTICE)详细说明
Jul 01 PHP
用PHP实现弹出消息提示框的两种方法
Dec 17 PHP
PHP错误和异长常处理总结
Mar 06 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十)
Jun 24 PHP
Smarty变量调节器失效的解决办法
Aug 20 PHP
PHP date()函数警告: It is not safe to rely on the system解决方法
Aug 20 PHP
php实现的常见排序算法汇总
Sep 08 PHP
8个PHP数组面试题
Jun 23 PHP
php把数组值转换成键的方法
Jul 13 PHP
PHP递归创建多级目录
Nov 05 PHP
php插件Xajax使用方法详解
Aug 31 PHP
如何利用PHP实现上传图片功能详解
Sep 24 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/11/25 PHP
php SQL防注入代码集合
2008/04/25 PHP
win7下memCache的安装过程(具体操作步骤)
2013/06/28 PHP
PHP return语句的另一个作用
2014/07/30 PHP
php数组操作之键名比较与差集、交集赋值的方法
2014/11/10 PHP
Django中的cookie与session操作实例代码
2017/08/17 PHP
php 多继承的几种常见实现方法示例
2019/11/18 PHP
jQuery chili图片远处放大插件
2009/11/30 Javascript
Javascript 面向对象之重载
2010/05/04 Javascript
jQuery的初始化与对象构建之浅析
2011/04/12 Javascript
jQuery筛选器children()案例详解(图文)
2013/02/17 Javascript
全面解析DOM操作和jQuery实现选项移动操作代码分享
2016/06/07 Javascript
angular源码学习第一篇 setupModuleLoader方法
2016/10/20 Javascript
JavaScript制作弹出层效果
2016/12/02 Javascript
AngularJS路由Ui-router模块用法示例
2017/05/29 Javascript
vue form 表单提交后刷新页面的方法
2018/09/04 Javascript
解决vuejs 使用value in list 循环遍历数组出现警告的问题
2018/09/26 Javascript
详解离线安装npm包的几种方法
2018/11/25 Javascript
Vue表单之v-model绑定下拉列表功能
2019/05/14 Javascript
[14:51]DOTA2 HEROS教学视频教你分分钟做大人-卓尔游侠
2014/06/13 DOTA
举例讲解Python设计模式编程中对抽象工厂模式的运用
2016/03/02 Python
python中(str,list,tuple)基础知识汇总
2018/02/20 Python
python3利用Dlib19.7实现人脸68个特征点标定
2018/02/26 Python
深入分析python数据挖掘 Json结构分析
2018/04/21 Python
python3基于OpenCV实现证件照背景替换
2018/07/18 Python
python中的句柄操作的方法示例
2019/06/20 Python
python实现关闭第三方窗口的方法
2019/06/28 Python
解决Pycharm 包已经下载,但是运行代码提示找不到模块的问题
2019/08/31 Python
pycharm 2019 最新激活方式(pycharm破解、激活)
2020/09/22 Python
马德里运动鞋商店:Nigra Mercato
2020/02/16 全球购物
什么是继承
2013/12/07 面试题
公司承诺书怎么写
2014/05/24 职场文书
班主任寄语2015
2015/02/26 职场文书
加班费申请报告
2015/05/15 职场文书
新闻稿格式范文
2015/07/18 职场文书
手把手带你彻底卸载MySQL数据库
2022/06/14 MySQL