php限制注册频率,php 限制用户接口请求频率

需求背景提供给APP的接口

提供给大众接口

并发限流

抢购商品防止系统瘫痪起飞 ( PHP版本 )<?php

$redis = new Redis();

$redis->connect('127.0.0.1',6379);

for($i = 0;$i<100;$i++)

{

$check = TokenBucket("10","ApiCount","60","10");

if ($check)

{

echo "成功";

}else {

echo "失败";

}

}

/*

* @function TokenBucket 令牌限速

*

* @params string $Uid 用户ID

*

* @params string $BucketName 令牌名称

*

* @params string $Time 令牌发放时间间隔

*

* @params string $BucketLimit 令牌桶的大小

*

* return booblean ture|false 是否超过请求

*

*/

function TokenBucket($Uid = '', $BucketName = '',$Time = '',$BucketLimit = ''){

$key = $Uid.':'.$BucketName;

$check = $redis->exists($key);

if ($check) {

$redis->incr($key);

$count = $redis->get($key);

if ($count > $BucketLimit) {

return false;

}

}else {

$redis->incr($key);

//限制时间为60秒

$redis->expire($key,$Time);

}

// $count = $redis->get($key);

// return $count; 你可以返回当前用户请求的次数

return true;

}

?>扩展

这里只是列举一个用户限速的demo 那么全系统的限速是怎么做的呢?

本文由 舒舒 创作,采用 知识共享署名4.0 国际许可协议进行许可

本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名

最后编辑时间为: Mar 22, 2018 at 10:10 am

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值