定制 michaelesmith/throttle 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

michaelesmith/throttle

Composer 安装命令:

composer require michaelesmith/throttle

包简介

A basic throttling implementation

关键字:

README 文档

README

Build Status

What is it?

A basic throttling implementation

Versions

If you are looking for the old version compatible with PHP 5.3 try the v0.1 branch and update your composer requirement to "michaelesmith/throttle": "^0.1"

Installation

composer require "michaelesmith/throttle"

You will also need a PSR-6 compatible cache library such as "cache/cache" or "symfony/cache".

Examples

$throttle = new Throttle(new \Cache\Adapter\PHPArray\ArrayCachePool());
$throttle->add(new Condition(60, 2)); // adds an interval where 2 increments are allowed in 60 seconds
$throttle->add(new Condition(600, 5)); // adds an interval where 5 increments are allowed in 10 minutes

// in each action you want to limit
try {
    $throttle->increment($_SERVER['REMOTE_ADDR']); // some client identifier like an ip or session id
    // NOTE: $_SERVER['REMOTE_ADDR'] may not gove you the actual client IP if you are behind a reverse proxy
    // Here is how Symfony finds the client IP
    // @link: https://github.com/symfony/symfony/blob/master/src/Symfony/Component/HttpFoundation/Request.php#L786-L805
} catch(RateException $e) {
    $condition = $e->getCondition(); // the condition that hit the rate limit
    printf('You can only make %d requests in %d seconds', $condition->getLimit(), $condition->getTtl());
}

You can use any PSR-6 compatible cache pool, but you need to use one that is persistent across requests for most cases unlike this example.

统计信息

  • 总下载量: 2.38k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 7
  • 点击次数: 1
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 6
  • Watchers: 2
  • Forks: 2
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2013-09-06

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固