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高并发下单解决方案相关推荐

  1. java 下单 锁_JAVA 高并发下单解决方案-分布式锁

    背景:高并发情况下,商品出现超卖的情况. 最终目标:保证数据的最终一致性. Contrrler 层框架 : Spring MVC 第一次尝试:最初的时候,发现Spring MVC是一个单例多线程的Co ...

  2. python高并发的解决方案

    python高并发的解决方案 参考文章: (1)python高并发的解决方案 (2)https://www.cnblogs.com/angelyan/p/10439475.html 备忘一下.

  3. 大数据和高并发的解决方案汇总

    大数据和高并发的解决方案汇总 参考文章: (1)大数据和高并发的解决方案汇总 (2)https://www.cnblogs.com/mingbai/p/7049458.html 备忘一下.

  4. 高并发架构解决方案总结

    高并发架构解决方案总结 一.关于高并发 高并发是指在同一个时间点,有很多用户同时访问URL地址,比如:淘宝的双11.双12,就会产生高并发.又如贴吧的爆吧,就是恶意的高并发请求,也就是DDOS攻击. ...

  5. 高并发下单/抢票问题处理

    2019独角兽企业重金招聘Python工程师标准>>> 问题: 涉及抢购.秒杀.抽奖.抢票等活动时,为了避免超卖,那么库存数量是有限的,但是如果同时下单人数超过了库存数量,就会导致商 ...

  6. 高可用高性能高并发量解决方案汇总整理

    一个小型的网站,可以使用最简单的html静态页面就实现了,配合一些图片达到美化效果,所有的页面均存放在一个目录下,这样的网站对系统架构.性能的要求都很简单.随着互联网业务的不断丰富,网站相关的技术经过 ...

  7. 高并发简单解决方案————redis队列缓存+mysql 批量入库(ThinkPhP)

    源码地址:https://github.com/Tinywan/PHP_Experience 问题分析 问题一:要求日志最好入库:但是,直接入库mysql确实扛不住,批量入库没有问题,done.[批量 ...

  8. java系统高并发的解决方案

    一个小型的网站,比如个人网站,可以使用最简单的html静态页面就实现了,配合一些图片达到美化效果,所有的页面均存放在一个目录下,这样的网站对系统架构.性能的要求都很简单,随着互联网业务的不断丰富,网站 ...

  9. SpringBoot 引入线程池+Queue缓冲队列实现高并发下单业务

    点击关注公众号,利用碎片时间学习 主要是自己在项目中(中小型项目) 有支付下单业务(只是办理VIP,没有涉及到商品库存),目前用户量还没有上来,目前没有出现问题,但是想到如果用户量变大,下单并发量变大 ...

最新文章

  1. 深入浅出Rust-Future-Part-5.md
  2. Qt读写ini文件的问题
  3. 解决Visual SVN在linux下不能访问的问题
  4. 五、吃掉Java基本数据类型,学习Java的基础
  5. centos 下载oracle_Linux镜像下载大全
  6. 教你如何在Android 6.0上创建系统悬浮窗
  7. beforeRouteEnter,beforeRouteLeave函数
  8. 项目部署到weblogic后页面乱码问题
  9. JAVA 第3课 数组
  10. 三万字整理深度匹配模型
  11. 左手用R右手Python系列16——XPath与网页解析库
  12. DELMIA软件物流仿真:带曲线转角输送带输送物料的仿真操作方法
  13. 8个免费和最佳开源视频流服务器软件
  14. 获取TrueType字体信息
  15. cydia多开微信_cydia怎么安装微信
  16. Keil5改黑色炫酷背景
  17. cdn加速的原理及步骤
  18. word2016毕业论文不同章节设置不同页眉方法
  19. 使用SPACEDESK时iPad显示Connected-Display OFF解决方法
  20. 服务器在无盘网吧的现在与将来(3)

热门文章

  1. python爬虫办公实例100例_简单的python爬虫实例
  2. 塔式、机架式、刀片式服务器区别以及特点
  3. 技术分享:几种常见的JavaScript混淆和反混淆工具分析实战
  4. 不能直接打开excel文件的原因
  5. Oracle:数据库备份之exp与imp的使用(切记,不能在plsql或sqlplus中使用)
  6. 带你玩转Mysql高可用方案--PXC
  7. 软考 java程序设计,软考程序员考点Java语言程序设计之控制流语句分类
  8. matlab 编写程序,matlab语言编写程序
  9. andriod 打造炫酷的电影票在线选座控件,1比1还原淘宝电影在线选座功能
  10. jQuery+Bootstrap美化弹出框