ThinkPHP6 限制访问频率,Cache版,适用于小项目的api接口限制访问频率
前言
最近在开发的一个小项目,由于客户的服务器配置和带宽都比较小,特做了个简易版的访问频率限制
ThinkPHP6框架,毫秒缓存参考这里 ThinkPHP6 限制访问频率,Redis版,支持毫秒缓存
原生或其他框架毫秒缓存参考这里 PHP 限制访问频率,Redis 通用不限制PHP框架版,支持毫秒缓存
实现代码如下,仅供参考
/**
* 检测用户接口访问频率
* $action 字符串 自定义,建议使用 模块方法名称
* $ttl 正整数 秒,默认1秒
* $uid 用户ID,针对某个用户的ID的限制
*
**/
function api_visits($action,$ttl=1,$uid='')
{
$key = "user_{$uid}_api_{$action}";
$visits = Cache::get($key);
if($visits){
return false;
}else{
Cache::set($key, 1, $ttl);
return true;
}
}
使用方式:
$uid = 66;
$ttl = 1;
$visitsRes = api_visits('login_verify',$ttl,$uid);
if($visitsRes)
return $this->error('接口访问频繁,请在'.$ttl.'秒之后再试');
return $this->success('Success');
总结
以上就是ThinkPHP 限制访问频率的 Cache版实现过程,希望对需要的同学有所帮助。