在秒杀、抢火车票等地方,我们通常用遇到这样高并发的问题,下面我提供了四种解决方案:

1、使用文件锁

$fp = fopen("order.lock", "r");
if(flock($fp,LOCK_EX)){//..处理订单的代码flock($fp,LOCK_UN);
}
fclose($fp);

————————————————————————————————————————————————————————

2、使用消息队列

我们常用到Memcacheq、Radis。

比如:有100张票可供用户抢,那么就可以把这100张票放到缓存中,读写时不要加锁。 当并发量大的时候,可能有500人左右抢票成功,这样对于500后面的请求可以直接转到活动结束的静态页面。进去的500个人中有400个人是不可能获得商品的。所以可以根据进入队列的先后顺序只能前100个人购买成功。后面400个人就直接转到活动结束页面。当然进去500个人只是举个例子,至于多少可以自己调整。而活动结束页面一定要用静态页面,不要用数据库。这样就减轻了数据库的压力。

—————————————————————————————————————————————————————————

 3、如果是分布式集群服务器,就需要一个或多个队列服务器

小米和淘宝的抢购还是有稍许不同的,小米重在抢的那瞬间,抢到了名额,就是你的,你就可以下单结算。而淘宝则重在付款的时候的过滤,做了多层过滤,比如要卖10件商品,他会让大于10的用户抢到,在付款的时候再进行并发过滤,一层层的减少一瞬间的并发量。

—————————————————————————————————————————————————————————

4、使用Memcache锁

product_lock_key 为票锁key

当product_key存在于memcached中时,所有用户都可以进入下单流程。

当进入支付流程时,首先往memcached存放add(product_lock_key, “1″),如果返回成功,进入支付流程。如果不成,则说明已经有人进入支付流程,则线程等待N秒,递归执行add操作。

php高并发秒杀解决方案相关推荐

  1. mysql高并发秒杀_高并发秒杀解决方案(转载)

    今天王总又给我们上了一课,其实mysql处理高并发,防止库存超卖的问题,在去年的时候,王总已经提过:但是很可惜,即使当时大家都听懂了,但是在现实开发中,还是没这方面的意识.今天就我的一些理解,整理一下 ...

  2. Java多线程、高并发秒杀时MySQL出现死锁原因(Deadlock found when trying to get lock)及对应解决方案

    1. 死锁背景 1.1 在做高并发秒杀中创建订单.减库存步骤时出现异常:MySQLTransactionRollbackException: Deadlock found when trying to ...

  3. SpringBoot实现Java高并发秒杀系统之DAO层开发(一)

    SpringBoot实现Java高并发秒杀系统之DAO层开发(一) 秒杀系统在如今电商项目中是很常见的,最近在学习电商项目时讲到了秒杀系统的实现,于是打算使用SpringBoot框架学习一下秒杀系统( ...

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

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

  5. SpringBoot实现Java高并发秒杀系统之Service层开发(二)

    继上一篇文章:SpringBoot实现Java高并发秒杀系统之DAO层开发 我们创建了SpringBoot项目并熟悉了秒杀系统的表设计,下面我们将讲解一下秒杀系统的核心部分:Service业务层的开发 ...

  6. Java高并发秒杀系统【观后总结】

    项目简介 在慕课网上发现了一个JavaWeb项目,内容讲的是高并发秒杀,觉得挺有意思的,就进去学习了一番. 记录在该项目 我结合其资料和观看视频的时候整理出从该项目学到了什么... 项目Dao层 日志 ...

  7. Spring Boot+Vue/前后端分离/高并发/秒杀实战课程之spring Security快速搭建oauth2 内存版身份认证

    Springboot快速搭建oauth2 内存版身份认证 环境准备 点击[Create New Project]创建一个新的项目 项目环境配置 配置Thymeleaf 搭建oauth2认证,加入两个依 ...

  8. 高并发秒杀系统方案的优化

    最近接触了一个关于高并发秒杀的项目,在这里稍微整理一下关于这个项目的一些值得记录的一些点,以下是源码地址:github 高并发项目的瓶颈主要在于数据库访问次数上,访问次数越多,对数据库压力也就越大,因 ...

  9. Java高并发秒杀API(四)之高并发优化

    Java高并发秒杀API(四)之高并发优化 1. 高并发优化分析 关于并发 并发性上不去是因为当多个线程同时访问一行数据时,产生了事务,因此产生写锁,每当一个获取了事务的线程把锁释放,另一个排队线程才 ...

  10. 实战:基于 RocketMQ 的电商高并发秒杀场景

    内容简介: "秒杀"这一业务场景在如今已经不是什么新鲜名词,它本质上属于短时突发性高并发访问问题,业务特点如下: 定时触发,流量在瞬间突增: 秒杀请求中常常只有部分能够成功: 秒杀 ...

最新文章

  1. python 十大经典排序算法
  2. spring MVC 工作原理
  3. Halcon —— 图像像素类型与转换
  4. 四个小时不止是敲了30多行代码,还懂了好多
  5. 腾讯视频视频下载_如何下载腾讯视频
  6. 如何从另一个Shell脚本调用Shell脚本?
  7. cv如何连接mysql_Naicvat操作数据库的基本操作
  8. kettle使用经验02
  9. web打印三种实现方式
  10. SMART PLC PID算法基本解析(附公式)
  11. 《郝斌C语言自学教程》课程大纲
  12. 计算机软件硬件和应用知识论文,有关计算机及应用毕业论文
  13. qlabel 添加图标_Qt之添加图标
  14. css图片菜鸟教程,css 常用样式(分享)
  15. K2P设置为桥接路由器教程
  16. Python:dataframe读取以文本形式存储的数字
  17. 电脑键盘equals在哪个位置_电脑键盘符号
  18. (字节流与字符流)InputStream字节输入流
  19. Java多线程系列-CyclicBarrier
  20. java必备知识进阶

热门文章

  1. “蔡徐坤微博转发过亿”幕后推手一审获刑五年
  2. MongoVue 破解治标不治本
  3. Linux批量更改文件后缀名
  4. 液晶电视TCON板原理讲解<转>
  5. php商城教学视频教程,布尔教育ThinkPHP商城实战视频教程的课件源码分享
  6. 一元线性回归及案例(Python)
  7. TOGAF架构体系材料
  8. Python tinypng 压缩脚本
  9. 安装 VS 2015 报错 kb2999226
  10. android下canvas连线题思路