Метод create класса RateLimiter
Метод create класса RateLimiter создаёт объект RateLimit,
который описывает лимит запросов для конкретного ключа.
Первым параметром передаётся ключ лимита, вторым - количество разрешённых
запросов, третьим - интервал времени в секундах.
Полученный объект затем передаётся в метод consume для проверки
и расхода лимита.
Синтаксис
public function create(string $key, int $limit, int $interval): RateLimit
Пример
Давайте создадим лимит на 3 запроса в течение 60 секунд и проверим его:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\RateLimiter\RateLimiterFactory;
class ArticleController extends AbstractController
{
public function index(RateLimiterFactory $limiterFactory): Response
{
$limiter = $limiterFactory->create('user');
$limit = $limiter->consume(1);
if (!$limit->isAccepted()) {
return new Response('too many requests');
}
return new Response('hello');
}
}
?>
Результат выполнения кода:
"hello"
Пример
Давайте создадим объект RateLimit напрямую через метод create
и выведем оставшееся количество запросов:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\RateLimiter\RateLimiterFactory;
class ArticleController extends AbstractController
{
public function index(RateLimiterFactory $limiterFactory): Response
{
$limiter = $limiterFactory->create('article');
$limit = $limiter->consume(1);
$res = $limit->getRemainingTokens();
return new Response((string) $res);
}
}
?>
Результат выполнения кода:
"2"
Смотрите также
-
класс
RateLimiter,
который управляет ограничением запросов -
метод
consume,
который расходует токены лимита -
класс
RateLimit,
который описывает состояние лимита -
метод
getRemainingTokens,
который возвращает оставшееся количество токенов