marko/ratelimiter
Composer 安装命令:
composer require marko/ratelimiter
包简介
Rate limiting for Marko Framework
README 文档
README
Rate limiting for Marko — throttle requests by key with configurable windows and cache-backed hit counts.
Overview
marko/ratelimiter provides a simple, cache-backed rate limiter that integrates with Marko's routing layer via middleware. Define limits by key (IP, user ID, API token, etc.) with configurable max attempts and decay windows. The RateLimiter class is the core service; RateLimitMiddleware applies limits to routes automatically.
Installation
composer require marko/ratelimiter
Usage
Apply the middleware to a route group:
use Marko\RateLimiter\Middleware\RateLimitMiddleware; $router->group(['middleware' => RateLimitMiddleware::class], function ($router): void { $router->get('/api/search', SearchController::class); });
Use the service directly for custom logic:
use Marko\RateLimiter\RateLimiter; $result = $rateLimiter->attempt( key: 'api:' . $request->ip(), maxAttempts: 60, decaySeconds: 60, ); if ($result->exceeded()) { throw new TooManyRequestsException($result->retryAfter); }
API Reference
RateLimiter::attempt(string $key, int $maxAttempts, int $decaySeconds)— Record a hit and return aRateLimitResultRateLimiter::clear(string $key)— Reset the counter for a keyRateLimitResult::exceeded()— Whether the limit has been breachedRateLimitResult::$remaining— Remaining attemptsRateLimitResult::$retryAfter— Seconds until the window resets
Documentation
Full configuration and middleware usage: marko/ratelimiter
统计信息
- 总下载量: 0
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 0
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2026-06-03