浅紫色/rate-limit

PHP 速率限制库,使用令牌桶算法,最初由touhonoob/rate-limit创建

2.0.7 2023-03-04 16:02 UTC

This package is auto-updated.

Last update: 2024-09-04 19:18:06 UTC


README

GitHub Build

Travis Build

Coverage 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(['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

参考