prezto/rate-limit

There is no license information available for the latest version (0.3) of this package.

PSR-7 rate limit implementation

This package's canonical repository appears to be gone and the package has been frozen as a result.

0.3 2016-05-22 16:06 UTC

This package is not auto-updated.

Last update: 2024-10-24 00:49:01 UTC


README

PSR-7 Rate limiting using redis. predis is not needed for this middleware. It uses Tinyredisclient by ptrofimov.

Usage

The last constructor argument is the redis password. This is option. When it is not provided the middleware will connect without authenticating.

$rateLimitMiddleware = new \Prezto\RateLimit\RateLimitMiddleware('10.241.25.226', '6379', 'aslkjkrnflawekrmgfslerm')

Setting the limit after instantiating. The first argument is the maximum number of requests. The second argument is the time limit in seconds.

In this example the client is allowed to make 60 requests in 30 seconds.

$rateLimitMiddleware->setRequestsPerSecond(60, 30);

When the request limit has been reached the request statuscode is set to 429 by defaukt.

Custom handler when limit has been reached.

$rateLimitMiddleware->setHandler(function ($request, $response) {
            $response = $response->withStatus(429);
            $response->getBody()->write("Rate limit reached.");
            return $response;
        });