Download the PHP package sanmai/rate-limiter without Composer

On this page you can find all versions of the php package sanmai/rate-limiter. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package rate-limiter

Rate Limiter

Latest Stable Version

Cache-based API rate limiting for PHP applications.

Table of Contents

Installation

Overview

Rate limiting with the sliding window approach.

Real-world example: Imagine you need to limit API requests to 100 per minute and 1000 per hour per client. This library lets you create a rate limiter with a 1-minute window and 1-hour observation period, then check if a client exceeds either of these limits.

Features

How it works (the simple version)

This rate limiter provides two types of limits:

  1. Window limits - Controls request rates in the most recent time window (e.g., 100 requests per minute)
  2. Period limits - Controls total requests over a longer observation period (e.g., 1000 requests per hour)

The rate limiter itself tracks requests, while the limits are set when checking if they've been exceeded.

Quick Start

Setting up a rate limiter

Tracking requests

Checking rate limits

Getting more information

Advanced Usage

Using multiple rate limiters for different constraints

You can create different rate limiters for different types of constraints:

Self-throttling for background jobs

When you control both ends (e.g., a background job calling your own API), you can use the wait time to self-throttle instead of failing:

If you're not using DuoClock, you can use PHP's time_nanosleep() directly:

When multiple workers compete for the same rate limit, use jitter to spread out retries and avoid thundering herd:

Note on wait time calculation: The wait time assumes a uniform distribution of requests across the window. If requests are bursty (clustered at the start or end of the window), the actual required wait time may differ. For most use cases this approximation works well.

Implementing in middleware

Here's how you might implement rate limiting in a PSR-15 middleware:

Error Handling

Here are some common scenarios and how to handle them:

Cache Adapters

This library uses the cache adapters provided by the sanmai/sliding-window-counter library. For information about available adapters and how to create your own, please refer to the sliding window counter documentation.

License

License

See the LICENSE file for details.


All versions of rate-limiter with dependencies

PHP Build Version
Package Version
Requires php Version ^8.2
sanmai/later Version ^0.1.5
sanmai/pipeline Version ^6.11 || ^7.0
sanmai/sliding-window-counter Version ^0.2.1
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package sanmai/rate-limiter contains the following files

Loading the files please wait ...