wolfcode/rate-limiting
Composer 安装命令:
composer require wolfcode/rate-limiting
包简介
php rate-limiting
README 文档
README
1. Require
php >= 8.1
Redis
2. Install
composer require "wolfcode/rate-limiting"
3. Usage
use Wolfcode\RateLimiting\Attributes\RateLimitingMiddleware; class Test { // 每1秒只能请求1次 // Only one request can be made per second #[RateLimitingMiddleware(key: 'test', seconds: 1, limit: 1, message: '请求过于频繁~')] public function index(Request $request): string // 每60秒只能请求100次 // Only 100 requests can be made every 60 seconds #[RateLimitingMiddleware(key: 'test', seconds: 60, limit: 100, message: '你好快啊,我好喜欢~')] public function index(Request $request): string // 每3秒只能请求10次 key可以使用数组回调方式 参考下方例子 // Only 10 key requests can be made every 3 seconds. An array callback method can be used, as shown in the example below #[RateLimitingMiddleware(key: [Some::class,'getIp'], seconds: 3, limit: 10, message: '我记住你了~')] public function index(Request $request): string // 每3秒只能请求10次 key可以使用数组回调方式 参考下方例子 // Only 10 key requests can be made every 3 seconds. An array callback method can be used, as shown in the example below #[RateLimitingMiddleware(key: [Some::class,'customIp'], seconds: 3, limit: 10, message: '我记住你了~'),args:[__METHOD__])] public function index(Request $request): string } // 需要自行创建一个 Some 类 并且存在静态方法 getIp // Need to create a Some class on your own and have a static method getIp class Some { public static function getIp(): string { return $request->ip(); } public static function customIp(...$args): string { return $args[0] . $request->ip(); } }
4. Suggestion
可以在 .env 文件中设置一个 RATE_LIMITING_STATUS 开关,来控制是否开启限流
建议在中间件中使用
You can set a RATE_LIMITING-STATUS switch in the .env file to control whether to enable current limiting
Suggest using it in middleware
5. Example
ThinkPHP8.1
<?php namespace app\admin\middleware; use app\common\traits\JumpTrait; use app\Request; use Closure; use Wolfcode\RateLimiting\Bootstrap; class RateLimiting { use JumpTrait; /** * 启用限流器需要开启Redis * @param Request $request * @param Closure $next * @return mixed */ public function handle(Request $request, Closure $next): mixed { // 是否启用限流器 if (!env('RATE_LIMITING_STATUS', false)) return $next($request); $controller = $request->controller(); $module = app('http')->getName(); $appNamespace = config('app.app_namespace'); $controllerClass = "app\\{$module}\\controller\\{$controller}{$appNamespace}"; $controllerClass = str_replace('.', '\\', $controllerClass); $action = $request->action(); try { Bootstrap::init($controllerClass, $action, [ # Redis 相关配置 'host' => env('REDIS_HOST', '127.0.0.1'), 'port' => (int)env('REDIS_PORT', 6379), 'password' => env('REDIS_PASSWORD', ''), 'prefix' => env('REDIS_PREFIX', ''), 'database' => (int)env('REDIS_DATABASE', 0), ]); }catch (\Throwable $exception) { $this->error($exception->getMessage()); } return $next($request); } }
wolfcode/rate-limiting 适用场景与选型建议
wolfcode/rate-limiting 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 5.69k 次下载、GitHub Stars 达 0, 最近一次更新时间为 2025 年 03 月 04 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 wolfcode/rate-limiting 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 wolfcode/rate-limiting 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 5.69k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 9
- 依赖项目数: 2
- 推荐数: 0
其他信息
- 授权协议: Apache-2.0
- 更新时间: 2025-03-04