thinkPHP框架乐观锁和悲观锁实例分析_php实例

来源:脚本之家  责任编辑:小易  

保证数据安全,处理多用百户并发访问。悲观锁,锁如其名,他对世界是悲观的,他认为别人访问正在改变的数据的概率是很高的,所以从数据开始度更改时就将数据锁住,知道更改完问成才释放。乐观锁,他对世界比较乐观,认为别人访问正在改变的数据的概率是很低的,所以直到修改完成准备提交所做的的修改到数答据库的时候才会将数据锁住。完成更改后释放。悲观锁会造成专访问数据库时间较长,并发性不好,特别是长事务。乐观锁在现实中使用得较多,属厂商较多采用www.zgxue.com防采集请勿采集本网。

本文实例讲述了thinkPHP框架乐观锁和悲观锁。分享给大家供大家参考,具体如下:

十大常用框架: 一、SpringMVC 二、Spring 三、Mybatis 四、Dubbo 五、Maven 六、RabbitMQ 七、Log4j 八、Ehcache 九、Redis 十、Shiro 延展阅读: 一、SpringMVC Spring Web MVC是一种基于Java

乐观锁:

一副完整的框架眼镜通常由镜片、镜圈、鼻托、桩头和镜脚等主要部分构成,除上述部件外,还有脚套、托叶螺丝、铰链螺丝等。1、镜片:亦称镜心,是托裱后的画心,适用于夹放在镜框内,故称镜心。其

例子对于一个正在出售的火爆商品,同一个时间,同时有10个人同时发起了10个线程来购买,10个线程读取到数据库的库存有20件和version为9。

加我QQ 8 1 1 9 3 11 9,帮你处理

那么乐观锁读取num数量和version版本两个字段,在更新的结果时候,我们就要更新条件where version=9这条语句,具体UPDATE goods SET num=num-1,version=version+1 WHERE version=9 and id=1,这样的话,如果其中一条执行成功后,数据库中version的值为10了,所以剩下的9个人线程都会失败了。

你好,一个大一个小,小50的现在已经淘汰了,锁体又分普通和轴承锁体,后者质量好点。通俗的说,小50是穿杆孔和钥匙孔的距离为5公分。大50也是5公分,只是锁体要大一些,大50和小50只是区别叫法而已

$result = $this->mysqli->query("SELECT num,version FROM goods WHERE id=1 LIMIT 1");$row = $result->fetch_assoc();$num = intval($row['num']);$version = intval($row['version']);if($num > 0){ usleep(100); $this->mysqli->begin_transaction(); $this->mysqli->query("UPDATE goods SET num=num-1,version=version+1 WHERE version={$version} and id=1"); $affected_rows = $this->mysqli->affected_rows; if($affected_rows == 1){ $this->mysqli->query("INSERT INTO log(good_id) VALUES({$num})"); $affected_rows = $this->mysqli->affected_rows; if($affected_rows == 1){ $this->mysqli->commit(); echo "success:".$num; }else{ $this->mysqli->rollback(); echo "fail1:".$num; } }else{ $this->mysqli->rollback(); echo "fail2:".$num; }}else{ echo "fail3:".$num;}

你先把门打开试试新的钥匙,能转动就不是钥匙的问题,要是打开门转动钥匙还是转不动就是钥匙有问题,要是锁上门后转不动,打开门能转动就是门的框架有问题,你要把框架上面防盗门锁芯交接的位置

乐观锁缺点: 比如可能别人先购买的,反而后面的先买到了,这就点不太合理

乐观锁优点: 这可以避免超发的现象发生

悲观锁mysql代码:

#主要对所在行进行for updateselect * from employee where id = 1 for update; update employee set money = 0 + 1 where id = 1;

参考链接:

https://www.kancloud.cn/mikkle/thinkphp5_study/359349

更多关于thinkPHP相关内容感兴趣的读者可查看本站专题:《ThinkPHP入门教程》、《thinkPHP模板操作技巧总结》、《ThinkPHP常用方法总结》、《codeigniter入门教程》、《CI(CodeIgniter)框架进阶教程》、《Zend FrameWork框架入门教程》及《PHP模板技术总结》。

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

乐观锁也不一定非得用框架自带的,主要是要理解乐观锁的原理,原理最主要,比如基于版本,基于时间,或者状态之类的内容来自www.zgxue.com请勿采集。


  • 本文相关:
  • tp框架(thinkphp)实现三次登陆密码错误之后锁定账号功能示例
  • thinkphp5查询数据及处理结果的方法小结
  • nginx下thinkphp5的配置方法详解
  • thinkphp5实现的查询数据库并返回json数据实例
  • thinkphp5实现数据库添加内容的方法
  • tp5(thinkphp5)框架实现多数据库查询的方法
  • tp5(thinkphp5)框架数据库db增删改查常见操作总结
  • thinkphp5框架闭包函数与子查询传参用法示例
  • tp5(thinkphp5)框架连接数据库的方法示例
  • 全面了解php中的全局变量
  • thinkphp3.2.3 分页代码分享
  • thinkphp5框架渲染模板的3种方式简述
  • thinkphp多域名情况下使用memcache方式共享session数据的实现方法
  • yii中创建自己的widget实例
  • thinkphp文件处理类dir.class.php的用法分析
  • php数组编码转换示例详解
  • 服务器迁移php版本不同可能诱发的问题
  • php生成html文件方法总结
  • 纯php打造的tab选项卡效果代码(不用js)
  • thinkphp 乐观锁怎么使用
  • 悲观锁和乐观锁的用处和区别?
  • 用ThinkPHP 这样的框架开发门户网站,有什么缺点
  • thinkphp的缺点
  • java框架有哪些常用框架?
  • 框架眼镜的结构
  • 用wampserver配置的运行环境,用的是thinkphp框架,别人帮我写的程序,总是报错怎么回事啊???
  • 室内门锁大五零和小五零有什么区别
  • 配新的钥匙却开不了锁?
  • 中国锁的发展史
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全php基础php技巧php实例php文摘php模板首页php编程php实例thinkphp入门教程thinkphp模板操作技巧总结thinkphp常用方法总结codeigniter入门教程ci(codeigniter)框架进阶教程zend framework框架入门教程php模板技术总结tp框架(thinkphp)实现三次登陆密码错误之后锁定账号功能示例thinkphp5查询数据及处理结果的方法小结nginx下thinkphp5的配置方法详解thinkphp5实现的查询数据库并返回json数据实例thinkphp5实现数据库添加内容的方法tp5(thinkphp5)框架实现多数据库查询的方法tp5(thinkphp5)框架数据库db增删改查常见操作总结thinkphp5框架闭包函数与子查询传参用法示例tp5(thinkphp5)框架连接数据库的方法示例全面了解php中的全局变量thinkphp3.2.3 分页代码分享thinkphp5框架渲染模板的3种方式简述thinkphp多域名情况下使用memcache方式共享session数据的实现方法yii中创建自己的widget实例thinkphp文件处理类dir.class.php的用法分析php数组编码转换示例详解服务器迁移php版本不同可能诱发的问题php生成html文件方法总结纯php打造的tab选项卡效果代码(不用js)php获取数组长度的方法(有实例)微信公众平台实现获取用户openid教你如何使用php session使用php生成二维码的两种方法(带php发送get、post请求的6种方法简php中把stdclass object转array的微信公众平台网页授权获取用户基laravel框架数据库curd操作、连贯php字符串的连接的简单实例php删除数组中空值的方法介绍php读取和保存base64编码的图片内容thinkphp基于反射实现钩子的方法分析使用phpcms搭建wap手机网站yii中cgridview禁止列排序的设置方法phpstudy2018升级mysql5.5为5.7教程(图文php在线代理转向代码php实现微信原生支付(扫码支付)功能实例分析10个php常见安全问题yii中ueditor富文本编辑器文件和图片上传laravel5.1 框架分页展示实现方法实例分析
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved