a4sex/time-token-service

基于创建时间的简单 `time-token` 服务。

v1.0.0 2023-09-16 17:01 UTC

This package is auto-updated.

Last update: 2024-09-20 12:14:38 UTC


README

这是一个简单的用于保存和检索检查准备时间戳的服务。可以使用任何标识符(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

start($id, $delay = null, $expire = null)

默认的超时时间为 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 не обязательны

ready($id)

如果 $id 不存在或已过期,则返回 NULL。如果时间戳已准备就绪,则返回 TRUE;如果时间未到,则返回 FALSE。

left($id)

返回剩余时间。如果为负值,则表示时间戳已准备就绪;如果为零,则表示时间戳刚刚准备就绪。

restore($id, $delay = null)

根据 $id 获取在启动时设置的时间戳准备就绪的预期时间 $delay。如果不存在,则返回默认值或 $delay

其他功能

expect($id)

返回时间戳 $id 的预期准备就绪时间 $delay 或 NULL。

delay($time = null)

返回时间 $time 的超时时间或默认值。

expires($expect, $expire = null)

时间戳在之后变得不可用。