a4sex / time-token-service
基于创建时间的简单 `time-token` 服务。
v1.0.0
2023-09-16 17:01 UTC
Requires
- php: ^8.2
Requires (Dev)
- phpunit/phpunit: ^9.2
- symfony/cache: ^6.3
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)
时间戳在之后变得不可用。