位置: 编程技术 - 正文
推荐整理分享php并发加锁示例(php处理并发有哪些技术),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:php并发处理加锁,php解决并发问题的几种实现,php并发编程,php解决并发问题的几种实现,php解决并发问题的几种实现,php 并发,php并发编程,php 并发,内容如对您有帮助,希望把文章链接给更多的朋友!
在工作项目中,会遇到一些php并发访问去修改一个数据问题,如果这个数据不加锁,就会造成数据的错误。下面我将分析一个财务支付锁的问题。希望对大家有所帮助。
1 没有应用锁机制
1.1 财务支付简化版本代码
1.2 问题分析
如果有两个操作人(p和m),都用用户编号账户,分别在pc和手机端同时登陆,账户总余额有,p操作人花,m操作人花。并发过程如下。
p操作人:
取出用户的余额。 支付后剩余 = - 。 更新后账户余额。m操作人:
取出用户余额。 支付后剩余 = - 。 支付后账户余额。两次支付后,账户的余额居然还有,应该的情况是花费了,账户余额才对。造成这个现象的根本原因,是并发的时候,p和m同时操作取到的余额数据都是。
2 加锁设计
锁的操作一般只有两步,一 获取锁(getLock);二是释放锁(releaseLock)。但现实锁的方式有很多种,可以是文件方式实现;sql实现;Memcache实现;根据这种场景我们考虑使用策略模式。
2.1 类图设计如下
2.2 php源码设计如下
LockSystem.php
3 应用锁机制
3.1 支付系统应用锁
3.2 锁分析
p操作人:
获取锁:pay 取出用户的余额。 支付后剩余 = - 。 更新后账户余额。 释放锁:paym操作人:
等待锁:pay 获取锁:pay 获取余额: 支付后剩余 = - 。 支付后账户余额。 释放锁:pay两次支付后,余额。非常完美了解决了并发造成的临界区资源的访问问题。
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
基于thinkPHP框架实现留言板的方法 本文实例讲述了基于thinkPHP框架实现留言板的方法。分享给大家供大家参考,具体如下:奋斗了一天,终于THINKPHP小邓留言版的概念版出来了其实真的THIN
Yii遍历行下每列数据的方法 本文实例讲述了Yii遍历行下每列数据的方法。分享给大家供大家参考,具体如下:效果图如下:控制器(1种)://显示列表publicfunctionactionList(){//实例化对
Yii针对添加行的增删改查操作示例 本文实例讲述了Yii针对添加行的增删改查操作。分享给大家供大家参考,具体如下:效果图:控制器:phpnamespacebackendcontrollers;useYii;useyiiwebController;useb
标签: php处理并发有哪些技术
本文链接地址:https://www.jiuchutong.com/biancheng/301958.html 转载请保留说明!友情链接: 武汉网站建设