hi-man/rateguardian

基于 yac 的本地速率限制

v1.0.0 2020-11-29 09:09 UTC

This package is auto-updated.

Last update: 2024-09-29 05:43:01 UTC


README

Build Status

让您的服务器保持冷静

需求

  • php 7.3+
  • yac 2.0.3+

安装

composer require hi-man/rateguardian

使用

步骤 1 : 初始化 guardian

RateGuardian::getInstance()->guardianOn($key, $total, $ttl)
  • $key 唯一的 guardian 密钥,例如 api 路径名,不超过 41 个字符
  • $ttl 秒,计数器将在该期间增加
  • $total$ttl 秒内允许的最大计数器值

步骤 2 : 使用 guardian 键保护 api

RateGuardian::getInstance()->guard($key);
  • 一个 false 值表示 api 过载,应用程序应处理这种情况,而不是提供服务
  • 返回值
    • 如果计数器小于 $total 则返回 true
    • 如果计数器等于 $total 则返回 true
    • 如果 $key 未通过 guardianOn 注册则返回 true
    • 否则返回 false

步骤 3 : 清除 guardian

RateGuardian::getInstance()->guardianOff($key);
  • 重启 php-fpm 或 php 脚本也会清除 guardian 设置

可选:获取 guardian 信息

RateGuardian::getInstance()->show($key);
  • 返回一个 guardian 信息的数组
    • totalguardianOn 提供的值
    • ttlguardianOn 提供的值
    • expired 计算周期结束的 unix 时间戳
    • current 当前计数器值