fustundag/tokenbucket

PHP TokenBucket 实现速率限制

1.0.0 2016-09-28 02:57 UTC

This package is auto-updated.

Last update: 2024-09-12 03:30:57 UTC


README

TokenBucket 是一种速率限制算法

您可以从 http://en.wikipedia.org/wiki/Token_bucket 检查算法

用法

基本用法

<?php

use TokenBucket\TokenBucket;
use TokenBucket\Storage\Memcached as MemcachedStorage;

$storage = new MemcachedStorage();

// Define the bucket
$options = array(
    'capacity' => 20,
    'fillRate' => 5
);

// Create the bucket
$bucket = new TokenBucket('key-for-bucket', $storage, $options);

// Check if token is avaible
if ($bucket->consume()===false) {
    //Not allowed!!
    exit;
}

// ...

选项

capacity : 桶的最大令牌计数。

fillRate : 每秒填充的令牌计数。例如,如果 capacity 是 20 且 fillRate 是 5,则每秒向桶中添加 5 个令牌。但是,总令牌数不能超过 20。

ttl : 桶在秒中的存活时间。如果没有给出或为零,它将根据 capacityfillRate 自动计算。可以使用 ttl 来使用 capacity 重置桶。例如:如果 capacity 是 100 且 fillRate 为零且 ttl 是 300,则 100 个令牌可以在 300 秒内消耗。300 秒后,桶将重置为 capacity

速率限制 Http 头

您可以使用 getRateLimitHttpHeaders 方法获取速率限制的 http 头

X-RateLimit-Limit : 提供桶的容量

X-RateLimit-Remaining : 桶允许的令牌计数

X-RateLimit-Reset : 桶的存活时间

贡献

您可以通过分叉存储库并创建拉取请求来贡献。您还可以创建问题或功能请求。

许可

该项目采用 MIT 许可证。可以在本存储库中找到 LICENSE 文件。