千家信息网

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安全错误 数据库的锁怎样保障安全 上海喔噻互联网科技有限公司 云信互联网科技有限公司 浩特互联网科技 小马过河互联网科技 国外互联网科技网站 互联网养老 桔豆科技 互联网和高科技公司 江苏南京365互联网科技 随着互联网科技发展 武汉健翔互联网络科技有限公司 赶超互联网科技 微信多开 广州新华互联网科技学校电竞方面 工业互联网展湾科技股份有限公司 无锡工业互联网科技有限公司 启辰互联网科技 宇信科技在杭州互联网排第几 银川新华互联网科技学校是国营吗 众联互联网络科技 互联网科技创新方面的资料 互联网科技创业有什么好项目 广东猪兼强互联网科技有限公司 美国互联网黑科技 亿账通互联网科技 科技与互联网的利与弊 央行互联网金融科技公司 昭通云南众福互联网科技有限公司 中化能源互联网科技招聘 南博望互联网科技有限公司 抖集互联网科技技术咨询 黑龙江互联网科技公司
0