千家信息网

PHP Hyperf的计数器限流组件怎么安装配置

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要介绍了PHP Hyperf的计数器限流组件怎么安装配置的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇PHP Hyperf的计数器限流组件怎么安装配置文章都会有
千家信息网最后更新 2026年11月03日PHP Hyperf的计数器限流组件怎么安装配置

这篇文章主要介绍了PHP Hyperf的计数器限流组件怎么安装配置的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇PHP Hyperf的计数器限流组件怎么安装配置文章都会有所收获,下面我们一起来看看吧。

说明

BETA

移植了 Laravel Cache 组件的 rate-limiter.

并对 \Psr\SimpleCache\CacheInterface 进行了补充. 增加了以下方法:

  • increment

  • decrement

  • add

  • put

安装

composer require wilbur-yu/hyperf-cache-ext

配置

1. 修改cache配置文件:

'default' => [    'driver' => WilburYu\HyperfCacheExt\Driver\RedisDriver::class,    'packer' => WilburYu\HyperfCacheExt\Utils\Packer\PhpSerializerPacker::class,    'prefix' => env('APP_NAME', 'skeleton').':cache:',],'limiter' => [    'max_attempts' => 5,  // 最大允许次数    'decay_minutes' => 1, // 限流单位时间    'prefix' => 'counter-rate-limit:', // key 前缀    'for' => [        'common' => static function (\Hyperf\HttpServer\Contract\RequestInterface $request) {            return Limit::perMinute(3);        },    ],    'key' => ThrottleRequest::key(),],
  • for 即对应 Laravel Facade RateLimiter::for(callable),

    在服务启动时, 监听器会收集该命名限制器数组, 供在注解中使用 for 参数引用. 在注解切面执行时, 会将当前请求 \Hyperf\HttpServer\Contract\RequestInterface 实例注入到该命名闭包.

  • key 默认为当前请求 fullUrl + ip. 支持字符串与闭包.

2. 在exceptions配置文件中增加:

\WilburYu\HyperfCacheExt\Exception\Handler\CounterRateLimitException::class

可选, 也可自行捕获, 该异常自带一个 getHeaders 方法, 值为: array('X-RateLimit-Limit', 'X-RateLimit-Remaining', 'Retry-After', 'X-RateLimit-Reset')

使用

在控制器中使用计数器限速注解

#[CounterRateLimitWithRedis(maxAttempts: 5, decayMinutes: 1)]or#[CounterRateLimit(for: "common")]

注解参数同配置文件, 优先级为注解>配置>默认.
使用 for 时, max_attempts 和 decay_minutes 不起作用.

如果你的缓存驱动不是 redis, 可以使用 CounterRateLimit 注解,反之则直接使用 CounterRateLimitWithRedis 注解即可.

在其他地方使用限速时, 可以使用辅助函数 counter_limiter(), 使用方法同 laravel中的 RateLimiter Facade, 可参考 Laravel 限流文档

$executed = counter_limiter()->attempt('send-sms:'.$user->id,2,function(){    // send sms logic});if (!$executed) {    return 'Too many messages sent!';}

关于"PHP Hyperf的计数器限流组件怎么安装配置"这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对"PHP Hyperf的计数器限流组件怎么安装配置"知识都有一定的了解,大家如果还想学习更多知识,欢迎关注行业资讯频道。

配置 注解 组件 计数器 文件 方法 知识 内容 参数 篇文章 闭包 限速 最大 价值 优先级 作用 使用方法 函数 切面 制器 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技股 互联网与科技金融数据 腾讯阿里互联网科技 互联网科技的英文 南京欣网互联网科技 互联网科技实习生岗位职责 北京华百购互联网科技有限公司 昭通云南众福互联网科技有限公司 互联网大会黑科技排名 晓花互联网科技有限公司网址 搜狐科技互联网 河南住房之家互联网科技 互联网公司黑科技创始人 高科技互联网发展前景如何 四川慕妮娅互联网科技有限公司 高科技互联网套路 锡山区互联网智能科技产品供应 互联网科技股为什么大涨 南京一网一红互联网科技有限公司 玉溪新华互联网科技怎么选 互联网金融科技 宜安科技 互联网金融 远拓互联网科技 睿民互联网科技 一五八零互联网科技 卓越科技互联网 招聘 互联网大会黑科技排名 合肥互联网科技公司公章图片 张家口科技产业互联网平台 北京天晋互联网科技有限公司
0