PHP code example of yaknet / rate-limiter

1. Go to this page and download the library: Download yaknet/rate-limiter library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

yaknet / rate-limiter example snippets




akNet\RateLimiter\Policy\TokenBucketLimiter;
use YakNet\RateLimiter\Storage\FileStorage;

// Initialize zero-dependency file-based storage
$storage = new FileStorage();

// Capacity = 10 tokens, Refills at 2.0 tokens every second
$limiter = new TokenBucketLimiter($storage, 10, 2.0);

$clientIp = '127.0.0.1';

// Consume 1 token
$limit = $limiter->consume($clientIp, 1);

if ($limit->isAccepted()) {
    echo "✔ Request accepted! Remaining quota: " . $limit->getRemaining() . "\n";
} else {
    echo "✖ Request throttled! Please wait " . $limit->getRetryAfter() . " seconds.\n";
}



use YakNet\RateLimiter\Policy\SlidingWindowLimiter;
use YakNet\RateLimiter\Storage\InMemoryStorage;

// RAM storage (values persist within the active long-running thread)
$storage = new InMemoryStorage();

// Limit = 5 requests per 10-second rolling window
$limiter = new SlidingWindowLimiter($storage, 5, 10);

$userId = 'user_99';
$limit = $limiter->consume($userId, 1);

if ($limit->isAccepted()) {
    // Process request
}

use YakNet\RateLimiter\Policy\TokenBucketLimiter;
use YakNet\RateLimiter\Storage\RedisStorage;

// Using native PHP \Redis or Predis\Client
$redis = new \Redis();
$redis->connect('127.0.0.1', 6379);

$storage = new RedisStorage($redis);
$limiter = new TokenBucketLimiter($storage, 100, 10.0);