fustundag / tokenbucket
PHP TokenBucket 实现速率限制
1.0.0
2016-09-28 02:57 UTC
Requires
- php: >=5.6.0
- ext-memcached: *
Requires (Dev)
- phpmd/phpmd: 2.4.*@stable
- phpunit/dbunit: 2.0.*@stable
- phpunit/php-code-coverage: 4.0.*@stable
- phpunit/phpunit: 5.5.*@stable
- squizlabs/php_codesniffer: 2.*@stable
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 : 桶在秒中的存活时间。如果没有给出或为零,它将根据 capacity 和 fillRate 自动计算。可以使用 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
文件。