经常是消息队列,这次来个多线程模拟实现秒杀抢单功能

分享教程

小编已经分享了各种各样的视频教程在文章里了,希望你能发现到。不过有些友友还是希望我推荐一些学习的书籍的,这里刚好有微信内置的一些技术学习书籍的推荐的。感谢大家的支持与信任

这本书我买过,总体上是比较高级,有技巧性的总结的,你想突破自己的话,希望这本书能帮到你!

文章正文

应集团要求给服务号做了个抢单秒杀的功能,需要对秒杀做个测试,想试试PHP多线程,就模拟了下抢单功能。

先说秒杀模块的思路:

正常情况下的用户秒杀操作

1、发起秒杀请求

2、进入秒杀队列

3、随机滞后 1 - 2 秒进行秒杀结果查询请求(算是变相分流吧)

4、成功则生成订单

5、返回结果

以下是模拟秒杀的代码:

执行多线程方法

我们都需要有一个日志还跟踪,这里生成日志信息

发起秒杀请求的方法

最后把整一个类完整文件分享给大家

测试代码机器性能(开发机):

订单代码机器性能(测试机):

系统测试结果:

模拟 1000 并发的情况,单机每秒 300+ 订单,服务器毫无压力。

反倒是测试机受不了了,CPU 飙升 100%。 Apache 偶尔崩溃。

不知道是 PHP 多线程和 Windows 环境的支持不好,还是 PHP 多线程本身的问题,区区 1000 线程跑不动。多线程的地方还是比较需要 Python 和 C 出马。

以上是文章全部内容,有学习与经验交流的可以加PHP自学中心。一起学习,交流与进步!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190129B0665S00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券