razonyang / yii2-rate-limiter
Yii2 速率限制器
1.0.0
2019-08-21 04:46 UTC
Requires
- php: ^7.1
- razonyang/token-bucket: ^1.0
- razonyang/yii2-psr-log: ^1.0
- yiisoft/yii2: ~2.0.13
Requires (Dev)
- codeception/codeception: ^3.0
- codeception/verify: ^1.1
- phpunit/phpunit: ^7
- yiisoft/yii2-redis: ^2.0
Suggests
- yiisoft/yii2-redis: Yii2 Redis extension for RedisManager
This package is auto-updated.
Last update: 2024-09-21 20:46:27 UTC
README
后端
Memcached
需要 memcached 扩展。Redis
需要 redis 扩展或 yiisoft/yii2-redis 包。
安装
composer require razonyang/yii2-rate-limiter
使用方法
以每小时5000次请求为例
return [ public function behaviors() { return [ // redis via redis extension 'rateLimiter' => [ 'class' => \RazonYang\Yii2\RateLimiter\RedisRateLimiter::class, 'password' => '', 'hostname' => 'localhost', 'port' => 6379, 'capacity' => 5000, 'rate' => 0.72, 'limitPeriod' => 3600, 'prefix' => 'rate_limiter:', 'ttl' => 3600, // 'nameCallback' => $callback, ], // redis via yii2-redis 'rateLimiter' => [ 'class' => \RazonYang\Yii2\RateLimiter\Redis\RateLimiter::class, 'redis' => 'redis', // redis component name or definition 'capacity' => 5000, 'rate' => 0.72, 'limitPeriod' => 3600, 'prefix' => 'rate_limiter:', 'ttl' => 3600, // 'nameCallback' => $callback, ], // memcached 'rateLimiter' => [ 'class' => \RazonYang\Yii2\RateLimiter\MemcachedRateLimiter::class, 'hostname' => 'localhost', 'port' => 11211, 'capacity' => 5000, 'rate' => 0.72, 'limitPeriod' => 3600, 'prefix' => 'rate_limiter:', 'ttl' => 3600, // 'nameCallback' => $callback, ], ]; } ];
RateLimiter
以 uid:route
(授权用户) 或 ip:route
(访客) 作为桶名,您也可以通过 nameCallback
改变这一行为
$nameCallback = function ( \yii\web\User $user, \yii\web\Request $request, \yii\base\Action $action ): string { return 'bucket name'; }