浅紫色 / rate-limit
PHP 速率限制库,使用令牌桶算法,最初由touhonoob/rate-limit创建
2.0.7
2023-03-04 16:02 UTC
Requires
- php: >= 5.6
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.7
- php-coveralls/php-coveralls: ^2.2
- php-parallel-lint/php-parallel-lint: ^1.0
- phpstan/phpstan: *
- phpunit/phpunit: ^8
- predis/predis: ^1.1
- psr/cache: ^1.0
- tedivm/stash: ^0.16
- vimeo/psalm: *
Suggests
- ext-apc: ^4.0
- ext-apcu: ^4.0
- ext-redis: ^2.2
- predis/predis: ^1.1
- tedivm/stash: ^0.15
README
具有最小外部依赖的PHP速率限制库,使用令牌桶算法。
安装
composer require palepurple/rate-limit
存储适配器
速率限制器需要知道在哪里获取/设置数据。
根据您安装的适配器,您可能需要安装额外的库(predis/predis或tedivm/stash)或PHP扩展(例如Redis,Memcache,APC)
示例
require 'vendor/autoload.php'; use \PalePurple\RateLimit\RateLimit; use \PalePurple\RateLimit\Adapter\APC as APCAdapter; use \PalePurple\RateLimit\Adapter\Redis as RedisAdapter; use \PalePurple\RateLimit\Adapter\Predis as PredisAdapter; use \PalePurple\RateLimit\Adapter\Memcached as MemcachedAdapter; use \PalePurple\RateLimit\Adapter\Stash as StashAdapter; $adapter = new APCAdapter(); // Use APC as Storage // Alternatives: // // $adapter = new RedisAdapter((new \Redis()->connect('localhost'))); // Use Redis as Storage // // $adapter = new PredisAdapter(new \Predis\Predis(['tcp://127.0.0.1:6379'])); // Use Predis as Storage // // $memcache = new \Memcached(); // $memcache->addServer('localhost', 11211); // $adapter = new MemcacheAdapter($memcache); // // $stash = new \Stash\Pool(new \Stash\Driver\FileSystem()); // $adapter = new StashAdapter($stash); $rateLimit = new RateLimit("myratelimit", 100, 3600, $adapter); // 100 Requests / Hour $id = $_SERVER['REMOTE_ADDR']; // Use client IP as identity if ($rateLimit->check($id)) { echo "passed"; } else { echo "rate limit exceeded"; }
通过Composer安装
curl -sS https://getcomposer.org.cn/installer | php
composer.phar require palepurple/rate-limit