PHP code example of bvtterfly / sliding-window-rate-limiter
1. Go to this page and download the library: Download bvtterfly/sliding-window-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/ */
bvtterfly / sliding-window-rate-limiter example snippets
return [
'use' => 'default',
];
use Bvtterfly\SlidingWindowRateLimiter\Facades\SlidingWindowRateLimiter;
$result = SlidingWindowRateLimiter::attempt(
'send-message:'.$user->id,
$maxAttempts = 5,
$decayInSeconds = 60
);
if ($result->successful()) {
// attempt is successful, do awesome thing...
} else {
// attempt is failed, you can get when you can retry again
// use $result->retryAfter for getting the number of seconds until the action is available again
// or use $result->availableAt() for getting UNIX timestamp instead.
}
/**
* Determine if the given key has been "accessed" too many times.
*
* @param string $key
* @param int $maxAttempts
* @param int $decay
*
* @return bool
*/
public function tooManyAttempts(string $key, int $maxAttempts, int $decay = 60): bool
/**
* Get the number of attempts for the given key for decay time in seconds.
*
* @param string $key
* @param int $decay
*
* @return int
*/
public function attempts(string $key, int $decay = 60): int
/**
* Reset the number of attempts for the given key.
*
* @param string $key
*
* @return mixed
*/
public function resetAttempts(string $key): mixed
/**
* Get the number of retries left for the given key.
*
* @param string $key
* @param int $maxAttempts
* @param int $decay
*
* @return int
*/
public function remaining(string $key, int $maxAttempts, int $decay = 60): int
/**
* Clear the number of attempts for the given key.
*
* @param string $key
*
* @return void
*/
public function clear(string $key)
/**
* Get the number of seconds until the "key" is accessible again.
*
* @param string $key
* @param int $maxAttempts
* @param int $decay
*
* @return int
*/
public function availableIn(string $key, int $maxAttempts, int $decay = 60): int
/**
* Get the number of retries left for the given key.
*
* @param string $key
* @param int $maxAttempts
* @param int $decay
*
* @return int
*/
public function retriesLeft(string $key, int $maxAttempts, int $decay = 60): int
use Bvtterfly\SlidingWindowRateLimiter\RateLimiting\Limit;
use Bvtterfly\SlidingWindowRateLimiter\Facades\SlidingWindowRateLimiter;
/**
* Configure the rate limiters for the application.
*
* @return void
*/
protected function configureRateLimiting()
{
SlidingWindowRateLimiter::for('global', function (Request $request) {
return Limit::perSeconds(45, 500);
});
}