Skip to content

patinthehat/BackoffV2

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BackoffV2 Build Status


BackoffV2 is a PHP 5.5+ library implementing various backoff algorithms, such as exponential backoff.

This library only returns a backoff delay amount based on the selected algorithms; implementation of the actual delay mechanism (such as sleep()) is left to the user.


Installation

Install BackoffV2 with Composer:

composer require patinthehat/backoffv2


Implementation

"Jitter" is implemented, if you choose to use it. Jitter is a small, variable amount of time that is added to the backoff amount.


Available Jitter algorithms (roughly based on this post) include:

  • NoJitter - No jitter
  • FullJitter - Standard jitter amount
  • EqualJitter - More consistent jitter amounts
  • DecorrelatedJitter - Higher jitter amounts

Backoff algorithms include:

  • ExponentialBackoff - exponentially increase the backoff amount
  • ConstantBackoff - use the same backoff amount, regardless of the attempt count.
  • LinearBackoff - linear increase of the backoff amount, i.e. 1, 2, 3, 4, ...

Usage


Using the Backoff class

BackoffV2 implements a main class, Backoff, that acts as a container and manager for the backoff and jitter algorithms you choose. The constructor signature for Backoff is:

public function __construct($maxBackoff, BackoffStrategyInterface $backoff, JitterStrategyInterface $jitter)

Usage is simple:

include 'vendor/autoload.php';
use BackoffV2\Backoff;
use BackoffV2\Backoff\ExponentialBackoff;
use BackoffV2\Jitter\FullJitter;

$b = new Backoff(15, new ExponentialBackoff, new FullJitter);

echo 'backoff = '.$b->getBackoff() . PHP_EOL;
echo 'backoff = '.$b->getBackoff() . PHP_EOL;
echo 'backoff = '.$b->getBackoff() . PHP_EOL;
echo 'backoff = '.$b->getBackoff() . PHP_EOL;
echo 'backoff = '.$b->getBackoff() . ' (attempt ' . $b->getAttempt().')' . PHP_EOL;
$b->reset();

License

BackoffV2 is available under the MIT License.

About

PHP library implementing various backoff alforithms such as exponential backoff.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy