php mysql 防止并发重复操作_PHP_Yii+MYSQL锁表防止并发情况下重复数据的方法,本文实例讲述了Yii+MYSQL锁表防 - phpStudy...

本文介绍了如何在Yii框架配合MySQL中使用locktable和unlocktables功能来防止并发操作导致的数据重复。通过实例展示了读写锁的应用,并给出了在实际业务场景中的代码片段。适合开发者在高并发环境下优化数据库操作。
摘要由CSDN通过智能技术生成

Yii+MYSQL锁表防止并发情况下重复数据的方法

本文实例讲述了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相关内容感兴趣的读者可查看本站专题:《Yii框架入门及常用技巧总结》、《php优秀开发框架总结》、《smarty模板入门基础教程》、《php操作office文档技巧总结(包括word,excel,access,ppt)》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。相关阅读:

PHP 解决session死锁的方法

利用ASP.NET MVC+Bootstrap搭建个人博客之praise.js点赞特效插件(二)

SQLite 性能优化实例分享

解析ABP框架领域层中的实体类与仓储类

CSS实现文字环绕图片效果

javascript控制Div层透明属性由浅变深由深变浅逐渐显示

MSSQL 监控数据/日志文件增长实现方法

CI配置多数据库访问的方法

解析php利用正则表达式解决采集内容排版的问题

CentOS下搭建PHP环境与WordPress博客程序的全流程总结

Windows系统下使用C语言编写单线程的文件备份程序

C#引用类型转换的常见方式总结

mysqld_safe启动脚本源码阅读、分析

php如何获取文件的扩展名

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值