PHP多线程模拟秒杀抢单

为模拟秒杀抢单功能,使用PHP进行多线程测试。在单机并发1000的情况下,达到每秒300+订单,但测试机CPU负载高,Apache偶现崩溃,暗示PHP多线程在Windows环境下可能性能不佳,适合场景可能需用Python或C来实现。
摘要由CSDN通过智能技术生成

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

先说秒杀模块的思路:

正常情况下的用户秒杀操作
1、发起秒杀请求
2、进入秒杀队列
3、随机滞后 1 - 2 秒进行秒杀结果查询请求(算是变相分流吧)
4、成功则生成订单
5、返回结果

以下是模拟秒杀的代码:

<?php


set_time_limit(0);

/**
* 线程的执行任务
*/
class Threadrun extends Thread
{
    
      public $url;
      public $data;
      public $params;

      public function __construct($url, $params=[])
      {
    
            $this->url = $url;
            $this->params = $params;
      }

      public function run()
      {
    
            if(($url = $this->url))
            {
                  $params = [
                      'goods_id'        =>    1,
                      'activity_id'     =>    1,
                      'user_id'         =>    isset($this->params['user_id']) ? $this->params['user_id'] : $this->getCurrentThreadId(),
                  ];
                  $startTime = microtime(true);
                  $this->data = [
                      'id'          =>    $params['user_id'],
                      'result'      =>    model_http_curl_get( $url, $params ),
                      'time'        =>    microtime(true)-$startTime,
                      'now'         =>    microtime(true),
                  ];
            
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值