pno/throttle

StackPHP兼容类,用于使用Predis限制HTTP请求,基于datagraph/rack-throttle。

dev-master 2014-09-28 14:14 UTC

This package is not auto-updated.

Last update: 2024-09-24 03:33:44 UTC


README

#限流

限流是StackPHP中间件,用于限制单个IP向应用程序发送请求的频率。它非常简单,并受Ruby / Rack的datagraph/rack-throttle库的启发。

目前限流只能使用Predis。我希望很快能编写一些适配器以允许使用其他客户端。

与Silex应用程序的示例用法

    require_once __DIR__.'/../vendor/autoload.php';

    $app = new \Silex\Application();

    $stack = (new Stack\Builder())
	    ->push('pno\Throttle', new \Predis\Client());

    $app = $stack->resolve($app);

它通过跟踪特定IP在给定时间间隔内的请求数量来工作。默认限制是每3600秒360个请求——即每小时每10秒一个请求。如果IP已达到限制,限流将通过发送带有消息“请求频率超过限制”的Symfony 403响应来响应。

您可以通过将它们传递给限流构造函数来覆盖这些默认值。

如果您使用Stack.Builder类应用中间件,并希望将IP限制为每10秒2个请求,并给出更丰富多彩的响应消息,您可以这样做

    $response = new Symfony\Component\HttpFoundation\Response('STAY OFF MY LAWN!!! >:(', 403);
    $stack = (new Stack\Builder())
        ->push('pno\Throttle', new Predis\Client(), 2, 10, $response);

对了,别忘了:这已经被添加到packagist,方便所有人,令人惊奇,令人好奇

  • "pno/throttle": "dev-master"