关于thinkphp连贯操作加锁的详细介绍lock
来源:互联网 发布:js 自定义select标签 编辑:程序博客网 时间:2024/05/16 18:25
官网上面的加锁介绍不是很详细,我给详细说一下
首先,数据库类型要是InnoDB,其次,加锁必须跟事务同时使用,还有,查询的时候都必须带锁,比如: $user_mod->lock(true)->where('id=1')->select();这个地方用锁查询,其次地方如果查询这个user对象需要防止同时操作的话也要进行加锁,就是也要用lock(true)这种方式查询:
代码示例如下:
首先,数据库类型要是InnoDB,其次,加锁必须跟事务同时使用,还有,查询的时候都必须带锁,比如: $user_mod->lock(true)->where('id=1')->select();这个地方用锁查询,其次地方如果查询这个user对象需要防止同时操作的话也要进行加锁,就是也要用lock(true)这种方式查询:
代码示例如下:
- M()->startTrans();//开启事务
- $map['userid']='test';//查询条件
- $user = M('User')->lock(true)->where($map)->find();//加锁查询
- if($user)
- {
- //执行你想进行的操作, 最后返回操作结果 result
- $result = true;
- if(!$result)
- {
- M()->rollback();//回滚
- $this->error('错误提示');
- }
- }
- M()->commit();//事务提交
- $this->success('成功提示');
复制代码
加上lock(true)的实际就是在查询语句最后加上 for update,可以用如下这种方法测试,开两个窗口,一个窗口开启事务,然后查询加锁一条数据,另一个窗口再次查询加锁这条数据,你会发现另一个窗口的查询会一直等待,直到第一个窗口的事务提交。如图:
0 0
- 关于thinkphp连贯操作加锁的详细介绍lock
- 关于thinkphp连贯操作加锁的详细介绍lock
- 关于thinkphp的简单连贯操作
- ThinkPHP的连贯操作
- ThinkPHP的连贯操作
- ThinkPHP的连贯操作
- ThinkPHP连贯操作
- ThinkPHP 连贯操作
- Thinkphp中的连贯操作
- ThinkPHP 3.1.2 连贯操作
- thinkPHP中连贯操作,视图
- 简单的thinkphp,mysql增删查改,连贯操作总结
- thinkPHP常用数据操作(三)连贯操作
- ThinkPHP开发指南-模型之连贯操作
- ThinkPHP 之 自定义模型、连贯操作要点
- ThinkPHP框架模型连贯操作(八)
- ThinkPHP快速入门3-连贯操作,变量
- 11.ThinkPHP 3.1.2 连贯操作
- java build.xml
- VS2010各版本下载及注册
- Linux软连接和硬链接
- friso中文分词器
- 第十三章 13.6.2节练习
- 关于thinkphp连贯操作加锁的详细介绍lock
- Button的onClick属性
- C# Delegate1
- Oracle存储过程、自定义函数、和触发器 示例
- 不同平台发布外链的技巧
- Interview Set
- 用CSS控制图片大小显示的方法
- cocos2d-x中CCSaleTo与CCScaleBy的详细区别(附加代码)
- 06-在Windows中制作os x启动盘,安装os