1. 需求说明:

接到一个需求发送优惠券的,要求前30名、前100名、前1000名的金额不同,1000以后的没得领
这个需求的重点是啥? 不能多发券啊!!
嗯,用Redis 去控制人数,发送成功一个缓存一个手机号,发送之前还得检测该手机号是否领取过

 /*** 缓存已领取的号码*/public function cacheReceived($phoneNumber){$cacheKey = 'activity:received'; // 缓存已发送的手机号/** @var Connection $redis */$redis = \Yii::$app->get('redis');if ($redis->sadd($cacheKey, $phoneNumber) === false) {throw new InvalidArgumentException("缓存出错!");}return true;}/*** 检测号码是否已领取过*/public function checkReceived($phoneNumber){$cacheKey = 'activity:received';/** @var Connection $redis */$redis = \Yii::$app->get('redis');$res = $redis->sismember($cacheKey, $phoneNumber);return boolval($res);}/*** 获取已领取的人数*/public function getSentNums(){$sentKey = 'activity:received';/** @var Connection $redis */$redis = \Yii::$app->get('redis');$nums = $redis->scard($sentKey);return intval($nums);}

有了这几个函数基本算是完成了。

2. 测试阶段:

  1. ab 工具
    命令:ab -c 100 -n 100 http://127.0.0.1:8080/v1/activity
    感觉没啥变化啊,后端也没日志记录。难道这个只能测试压力不会执行PHP文件?
    搞不懂,算了换个方法
    ↓↓↓↓↓↓↓↓

  2. postman runner
    postman里面有自带的runner ,批量请求接口。挺方便的,直接来个1000次。手机号先在代码里面写个随机的
    喏,这就有可能出现重复的手机号顺带测试下重复领取的

    $start = 13900000001;
    $end = 13900000200;
    $phoneNumber = rand($start, $end);
    

    测试几次后没有出现超领的现象,嗯还可以。网上说runner是串行的,上一个请求结束后才开始下一个请求,只能算连续测试不是并发测试。
    倒回去看下ab到底是哪里有问题,导致PHP文件不执行。

    “难道这个只能测试压力不会执行PHP文件?” 这我肯定是不信的

  3. 再次测试ab
    ab不执行PHP文件,那用curl 试试。
    curl http://127.0.0.1:8080/v1/activity
    ??? 返回404 页面。问题找到了,原来是请求不到啊
    curl 默认是get方式请求,那查下post 怎么写的
    curl http://127.0.0.1:8080/v1/activity -X POST
    正常返回,那就去查查ab的post参数
    ab -c300 -n1000 -p test.log http://127.0.0.1:8080/v1/activity
    -p 该参数是post需要发送的数据,不能不填。那就新建个空白的文件
    OK 正常请求,日志正常记录。这里用记录日志代替发券,数日志的条数就知道有没有超发

3. 总结下:

总结啥,写完我都觉得写的太啰嗦了。
如果你是第一次写接口、第一次用测压工具的话,希望这点啰嗦的文章能帮到你

开发一个领券接口过程相关推荐

  1. 人人都是接口开发大师,这个开源项目花5分钟就可以开发一个API接口

    PhalApi开源接口框架 读音:派框架,官网:https://www.phalapi.net/ PhalApi是一个PHP轻量级开源接口框架,致力于快速开发接口服务.支持HTTP/SOAP/RPC等 ...

  2. 【APICloud系列|21】使用APICloud敏捷式开发总结,回顾开发一个完整APP过程。

    导读:APICloud是柚子(北京)科技有限公司创建的低代码开发平台,总部位于北京, 通过生产力工具与混合开发技术,为企业与开发者构建高效的IT环境:在APICloud平台已有80万注册用户,平台每日 ...

  3. 利用MyEclipse开发一个调用webservice接口的程序

    上一篇文章我们已经学习了如何使用Java 工具MyEclipse开发一个webservice接口,那么接口开发好了如何调用?接下来我们就来解决这个问题. 1:首先随便创建一个Java project选 ...

  4. 通过接口给fragment传值_Dataway 4.1.3 发布,开发一个接口不必在编写任何形式的代码,秒级交付!...

    Dataway 数据接口配置服务 依托 DataQL 服务聚合能力,为应用提供一个 UI 界面.并以 jar 包的方式集成到应用中. 通过 Dataway 可以直接在界面上配置和发布接口. 这种模式的 ...

  5. 编写一个USB接口程序,模拟计算机启动过程和关闭过程启动过程中要加载鼠标、键盘、麦克风等USB设备,具体要求如下: (1)定义一个接口USB,包含两个抽象方法turnOn()he turnOff(),

    一.好物推荐 给大家推荐三款蓝牙耳机,下面的链接可以直接购买: 1.https://item.taobao.com/item.htm?ft=t&id=643733003968 2.https: ...

  6. FastAPI:快速开发一个文本转语音的接口

    这段音频就是本文的接口生成的. Python Web 开发方面有一个很重要的环节就是开发接口,开发接口性能最好的工具就是闪电侠 FastAPI[1],正如它的名字一样,是非常快的 API.当然,还有一 ...

  7. 使用Spring boot开发一个接口 - TODO应用中新建一个TASK

    spring initializr spring boot官方提供了很方便的初始化项目的方法,即spring initializr.可以直接在IDEA中创建,或在https://start.sprin ...

  8. Nginx 模块开发(1)—— 一个稍稍能说明问题模块开发 Step By Step 过程

    1. Nginx 介绍 Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,它的发音为"engine X", 是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP ...

  9. 【如何快速的开发一个完整的iOS直播app】(美颜篇)

    前言 在看这篇之前,如果您还不了解直播原理,请查看这篇文章如何快速的开发一个完整的iOS直播app(原理篇) 开发一款直播app,美颜功能是很重要的,如果没有美颜功能,可能分分钟钟掉粉千万,本篇主要讲 ...

最新文章

  1. SAP Cloud for Customer Price-计价简介
  2. wxWidgets:源代码概览
  3. java short 写法_Java Short longValue()用法及代码示例
  4. 三年经验前端社招——丰巢科技
  5. 小程序tabbar这套方案全搞定!
  6. 现代质量管理方法的应用思考和实践
  7. SQL查询最近几年、几月的数据
  8. c 打印html文档,C# C/S程序使用HTML文件作为打印模板
  9. 淘宝客APP双端原生源码 开源原生态可运营可二次开发+含全套开发文档
  10. 微电网逆变器VF控制simulink仿真模型。 采用解耦的电压电流双闭环控制, 输出电压电流波形质量良好
  11. java 进度条 百分比_java怎么让进度条带百分数
  12. Java架构师发展路线
  13. tomcat6url请求400错误(%2F与%5C)
  14. 单反相机的传奇—佳能单反50年辉煌之路(连载十六)
  15. Python爬虫-02 request模块爬取妹子图网站
  16. 如何在win10上搭建服务器
  17. 对挣钱与財富等三个问题的思考
  18. MD软件常见问题解答sp1版
  19. 写点东西祭奠老师这个职业
  20. 股票技术指标atr是什么含义_股票技术指标公式详解K线图分析

热门文章

  1. 基于vlc的ActiveX流媒体播放器的二次开发流程
  2. 汉语言文学类毕业论文,有什么好写的选题?
  3. 对网红“故宫火锅店” 包容中要保持警惕
  4. 【金融学】中国经济专题
  5. linux命令如果带源ip去平台,Linux下指定源ip进行ping操作
  6. Java调用Python
  7. Selenium 入门
  8. 测试人员如何把控项目进度
  9. 如何更好地把控项目进度以及对资源进行估算
  10. CloudCC:CRM帮您轻松直观地管理客户信息