日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

开发一个领券接口过程

發(fā)布時間:2024/3/26 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 开发一个领券接口过程 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1. 需求說明:

接到一個需求發(fā)送優(yōu)惠券的,要求前30名、前100名、前1000名的金額不同,1000以后的沒得領(lǐng)
這個需求的重點(diǎn)是啥? 不能多發(fā)券啊!!
嗯,用Redis 去控制人數(shù),發(fā)送成功一個緩存一個手機(jī)號,發(fā)送之前還得檢測該手機(jī)號是否領(lǐng)取過

/*** 緩存已領(lǐng)取的號碼*/public function cacheReceived($phoneNumber){$cacheKey = 'activity:received'; // 緩存已發(fā)送的手機(jī)號/** @var Connection $redis */$redis = \Yii::$app->get('redis');if ($redis->sadd($cacheKey, $phoneNumber) === false) {throw new InvalidArgumentException("緩存出錯!");}return true;}/*** 檢測號碼是否已領(lǐng)取過*/public function checkReceived($phoneNumber){$cacheKey = 'activity:received';/** @var Connection $redis */$redis = \Yii::$app->get('redis');$res = $redis->sismember($cacheKey, $phoneNumber);return boolval($res);}/*** 獲取已領(lǐng)取的人數(shù)*/public function getSentNums(){$sentKey = 'activity:received';/** @var Connection $redis */$redis = \Yii::$app->get('redis');$nums = $redis->scard($sentKey);return intval($nums);}

有了這幾個函數(shù)基本算是完成了。

2. 測試階段:

  • ab 工具
    命令:ab -c 100 -n 100 http://127.0.0.1:8080/v1/activity
    感覺沒啥變化啊,后端也沒日志記錄。難道這個只能測試壓力不會執(zhí)行PHP文件?
    搞不懂,算了換個方法
    ↓↓↓↓↓↓↓↓

  • postman runner
    postman里面有自帶的runner ,批量請求接口。挺方便的,直接來個1000次。手機(jī)號先在代碼里面寫個隨機(jī)的
    喏,這就有可能出現(xiàn)重復(fù)的手機(jī)號順帶測試下重復(fù)領(lǐng)取的

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

    測試幾次后沒有出現(xiàn)超領(lǐng)的現(xiàn)象,嗯還可以。網(wǎng)上說runner是串行的,上一個請求結(jié)束后才開始下一個請求,只能算連續(xù)測試不是并發(fā)測試。
    倒回去看下ab到底是哪里有問題,導(dǎo)致PHP文件不執(zhí)行。

    “難道這個只能測試壓力不會執(zhí)行PHP文件?” 這我肯定是不信的

  • 再次測試ab
    ab不執(zhí)行PHP文件,那用curl 試試。
    curl http://127.0.0.1:8080/v1/activity
    ??? 返回404 頁面。問題找到了,原來是請求不到啊
    curl 默認(rèn)是get方式請求,那查下post 怎么寫的
    curl http://127.0.0.1:8080/v1/activity -X POST
    正常返回,那就去查查ab的post參數(shù)
    ab -c300 -n1000 -p test.log http://127.0.0.1:8080/v1/activity
    -p 該參數(shù)是post需要發(fā)送的數(shù)據(jù),不能不填。那就新建個空白的文件
    OK 正常請求,日志正常記錄。這里用記錄日志代替發(fā)券,數(shù)日志的條數(shù)就知道有沒有超發(fā)

  • 3. 總結(jié)下:

    總結(jié)啥,寫完我都覺得寫的太啰嗦了。
    如果你是第一次寫接口、第一次用測壓工具的話,希望這點(diǎn)啰嗦的文章能幫到你

    總結(jié)

    以上是生活随笔為你收集整理的开发一个领券接口过程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。