Простой сервис для сохранения и получения времени готовности токена к проверке. В качестве токена может использоваться любой идентификатор(ID). Используется для установки времени ожидания доступа к сервису как превентивная защита от DDoS.
Сохраняет в установленный экземпляр кэша идентификатор в качестве ключа
и значение времени ожидания в качестве значения
. Использует PSR-6 совместимый экземпляр кэша.
use FreedomSex\Services\TimeTokenService;
use Symfony\Component\Cache\Adapter\FilesystemAdapter;
// любой PSR-6 совместимый экземпляр кэша
// для примера указан FilesystemAdapter Symfony
// обычно используется MemcachedAdapter
$memory = new FilesystemAdapter();
$timeTokenService = new TimeTokenService($memory);
$id = '123456'; // любая строка
$timeTokenService->start($id, 2);
$timeTokenService->ready($id); // FALSE
sleep(2); // Подождать
$timeTokenService->ready($id); // TRUE
По умолчанию время ожидания TimeTokenService::DEFAULT_DELAY
2 секунды. Время хранения токена ожидания TimeTokenService::TOKEN_EXPIRE
10 секунд.
// Параметры $delay и $expire не обязательны
$timeTokenService = new TimeTokenService($memory, $delay = null, $expire = null);
// OR
$timeTokenService->setDelay($time);
$timeTokenService->setExpire($time);
// OR
$timeTokenService->start($id, $delay = null, $expire = null);
// Параметры $delay и $expire не обязательны
Возвращает NULL если $id
не существует или истекло время хранения. TRUE - если токен готов, FALSE - время не пришло.
Сколько осталось времени. Отрицательное значение - токен готов, прошло времени от наступления готовности. Нулевое - токен готов только что.
Получить ожидаемое время готовности токена $delay
по $id
установленное на старте. Если не существует - вернет дефолтное значение или $delay
.
Вернет ожидаемое время готовности токена $delay
по $id
или NULL
Вернет время ожидания $time
или дефолтное значение
Время хранения токена после которого он станен недоступен.