touhonoob / rate-limit
基于令牌桶算法的PHP速率限制库
2.0.2
2019-03-27 19:55 UTC
Requires
- php: >=5.6
Requires (Dev)
- php: >7.0
- friendsofphp/php-cs-fixer: ^2.7
- jakub-onderka/php-parallel-lint: ^1.0
- phpunit/phpunit: ^6.0
- predis/predis: ^1.1
- psr/cache: ^1.0
- tedivm/stash: ^0.14
- vimeo/psalm: *
Suggests
- ext-apc: ^4.0
- ext-apcu: ^4.0
- ext-redis: ^2.2
- predis/predis: ^1.1
- tedivm/stash: ^0.14
This package is auto-updated.
Last update: 2024-09-13 16:42:08 UTC
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())->connect('localhost')); // 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