Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/tobion/retry
A generic library to retry an operation in case of an error. You can configure the behavior like the exceptions to retry on.
https://github.com/tobion/retry
delay exception-handling php restart retry-library
Last synced: 18 days ago
JSON representation
A generic library to retry an operation in case of an error. You can configure the behavior like the exceptions to retry on.
- Host: GitHub
- URL: https://github.com/tobion/retry
- Owner: Tobion
- License: mit
- Created: 2015-05-29T13:41:54.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2020-05-28T15:33:44.000Z (over 4 years ago)
- Last Synced: 2024-10-14T06:25:54.513Z (about 1 month ago)
- Topics: delay, exception-handling, php, restart, retry-library
- Language: PHP
- Homepage:
- Size: 34.2 KB
- Stars: 15
- Watchers: 6
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
Retry
=====PHP library for retrying code, e.g. HTTP requests or database transactions, in case of failures.
[![Build Status](https://travis-ci.org/Tobion/retry.svg)](https://travis-ci.org/Tobion/retry)
Installation
------------$ composer require tobion/retry
Usage
-----```php
use Tobion\Retry\Retry;$callableThatMightFail = function (int $arg1, int $arg2): int {
if (random_int(1, 2) % 2) {
throw new \RuntimeException('Sudden error');
}return $arg1 + $arg2;
};// Allows you to call the callable with parameters and retry its execution in case an exception is thrown.
// You can access the return value of the callable (3 in this case).
$returnValue = Retry::configure()->call($callableThatMightFail, 1, 2);// By default:
// - The callable is retried twice (i.e. max three executions). If it still fails, the last error is rethrown.
// - Retries have a no delay between them.
// - Every \Throwable will trigger the retry logic, i.e. both \Exception and \Error.
// You can adjust the retry logic like this:
$retryingCallable = Retry::configure()
->maxRetries(5)
->delayInMs(100)
->retryOnSpecificExceptions(\RuntimeException::class) // other failures like \TypeError will not be retried
->decorate($callableThatMightFail)
;
$returnValue = $retryingCallable(1, 2);
// $retryingCallable just decorates the original callable and can be used like it.
// To find out how often it had to retry, you can use:
$retryingCallable->getRetries();
```Contributing
------------To run tests:
$ composer install
$ vendor/bin/simple-phpunit