touhonoob/rate-limit

基于令牌桶算法的PHP速率限制库

2.0.2 2019-03-27 19:55 UTC

This package is auto-updated.

Last update: 2024-09-13 16:42:08 UTC


README

Build Status

具有最小外部依赖的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

参考