PHP高并发下单解决方案
1、使用文件锁
<?php
$fp = fopen("order.lock", "r");
if(flock($fp,LOCK_EX)){
//..处理订单的代码
flock($fp,LOCK_UN);
}
fclose($fp);
?>
2、使用消息队列
可以基于例如MemcacheQ等这样的消息队列。
比如有100张票可供用户抢,那么就可以把这100张票放到缓存中,读写时不要加锁。 当并发量大的时候,可能有500人左右抢票成功,这样对于500后面的请求可以直接转到活动结束的静态页面。进去的500个人中有400个人是不可能获得商品的。所以可以根据进入队列的先后顺序只能前100个人购买成功。后面400个人就直接转到活动结束页面。当然进去500个人只是举个例子,至于多少可以自己调整。而活动结束页面一定要用静态页面,不要用数据库。这样就减轻了数据库的压力。
3、如果是分布式集群服务器,就需要一个或多个队列服务器
小米和淘宝的抢购还是有稍许不同的,小米重在抢的那瞬间,抢到了名额,就是你的,你就可以下单结算。而淘宝则重在付款的时候的过滤,做了多层过滤,比如要卖10件商品,他会让大于10的用户抢到,在付款的时候再进行并发过滤,一层层的减少一瞬间的并发量。
4、使用Memcache锁
product_key 为票的key
product_lock_key 为票锁key
当product_key存在于memcached中时,所有用户都可以进入下单流程。
当进入支付流程时,首先往memcached存放add(product_lock_key, “1″),如果返回成功,进入支付流程。如果不成,则说明已经有人进入支付流程,则线程等待N秒,递归执行add操作。
PHP高并发下单解决方案相关推荐
- java 下单 锁_JAVA 高并发下单解决方案-分布式锁
背景:高并发情况下,商品出现超卖的情况. 最终目标:保证数据的最终一致性. Contrrler 层框架 : Spring MVC 第一次尝试:最初的时候,发现Spring MVC是一个单例多线程的Co ...
- python高并发的解决方案
python高并发的解决方案 参考文章: (1)python高并发的解决方案 (2)https://www.cnblogs.com/angelyan/p/10439475.html 备忘一下.
- 大数据和高并发的解决方案汇总
大数据和高并发的解决方案汇总 参考文章: (1)大数据和高并发的解决方案汇总 (2)https://www.cnblogs.com/mingbai/p/7049458.html 备忘一下.
- 高并发架构解决方案总结
高并发架构解决方案总结 一.关于高并发 高并发是指在同一个时间点,有很多用户同时访问URL地址,比如:淘宝的双11.双12,就会产生高并发.又如贴吧的爆吧,就是恶意的高并发请求,也就是DDOS攻击. ...
- 高并发下单/抢票问题处理
2019独角兽企业重金招聘Python工程师标准>>> 问题: 涉及抢购.秒杀.抽奖.抢票等活动时,为了避免超卖,那么库存数量是有限的,但是如果同时下单人数超过了库存数量,就会导致商 ...
- 高可用高性能高并发量解决方案汇总整理
一个小型的网站,可以使用最简单的html静态页面就实现了,配合一些图片达到美化效果,所有的页面均存放在一个目录下,这样的网站对系统架构.性能的要求都很简单.随着互联网业务的不断丰富,网站相关的技术经过 ...
- 高并发简单解决方案————redis队列缓存+mysql 批量入库(ThinkPhP)
源码地址:https://github.com/Tinywan/PHP_Experience 问题分析 问题一:要求日志最好入库:但是,直接入库mysql确实扛不住,批量入库没有问题,done.[批量 ...
- java系统高并发的解决方案
一个小型的网站,比如个人网站,可以使用最简单的html静态页面就实现了,配合一些图片达到美化效果,所有的页面均存放在一个目录下,这样的网站对系统架构.性能的要求都很简单,随着互联网业务的不断丰富,网站 ...
- SpringBoot 引入线程池+Queue缓冲队列实现高并发下单业务
点击关注公众号,利用碎片时间学习 主要是自己在项目中(中小型项目) 有支付下单业务(只是办理VIP,没有涉及到商品库存),目前用户量还没有上来,目前没有出现问题,但是想到如果用户量变大,下单并发量变大 ...
最新文章
- 深入浅出Rust-Future-Part-5.md
- Qt读写ini文件的问题
- 解决Visual SVN在linux下不能访问的问题
- 五、吃掉Java基本数据类型,学习Java的基础
- centos 下载oracle_Linux镜像下载大全
- 教你如何在Android 6.0上创建系统悬浮窗
- beforeRouteEnter,beforeRouteLeave函数
- 项目部署到weblogic后页面乱码问题
- JAVA 第3课 数组
- 三万字整理深度匹配模型
- 左手用R右手Python系列16——XPath与网页解析库
- DELMIA软件物流仿真:带曲线转角输送带输送物料的仿真操作方法
- 8个免费和最佳开源视频流服务器软件
- 获取TrueType字体信息
- cydia多开微信_cydia怎么安装微信
- Keil5改黑色炫酷背景
- cdn加速的原理及步骤
- word2016毕业论文不同章节设置不同页眉方法
- 使用SPACEDESK时iPad显示Connected-Display OFF解决方法
- 服务器在无盘网吧的现在与将来(3)
热门文章
- python爬虫办公实例100例_简单的python爬虫实例
- 塔式、机架式、刀片式服务器区别以及特点
- 技术分享:几种常见的JavaScript混淆和反混淆工具分析实战
- 不能直接打开excel文件的原因
- Oracle:数据库备份之exp与imp的使用(切记,不能在plsql或sqlplus中使用)
- 带你玩转Mysql高可用方案--PXC
- 软考 java程序设计,软考程序员考点Java语言程序设计之控制流语句分类
- matlab 编写程序,matlab语言编写程序
- andriod 打造炫酷的电影票在线选座控件,1比1还原淘宝电影在线选座功能
- jQuery+Bootstrap美化弹出框