ekomobile / retry
带退避的重试
0.4.0
2018-12-13 12:14 UTC
Requires
- php: >=7.1
Requires (Dev)
- phpunit/phpunit: ^7.5.0
This package is auto-updated.
Last update: 2024-09-14 02:50:26 UTC
README
这是一个从 https://github.com/cenkalti/backoff (感谢 @cenkalti) 端口到 PHP 的项目,它是从 Google 的 Java HTTP 客户端库 转移过来的指数退避算法。
指数退避 是一种算法,它使用反馈来乘法减少某些过程的速率,以逐步找到可接受的速率。重试次数以指数方式增加,并在达到某个阈值时停止增加。
示例
简单
使用默认指数退避进行重试。
(new Retry(function () { // workload ... }))();
高级
$operation = function () { // workload ... if ($somePermanentFailCondition) { throw new \Ekomobile\Retry\Exception\Permanent(new \Exception('Unretryable error')) } // ... throw new Exception('Retryable error') }; $backoff = new \Ekomobile\Retry\Backoff\WithMaxRetries(new \Ekomobile\Retry\Backoff\Exponential(), 5); $notify = function (\Throwable $e) { // $logger->log($e); }; $retry = new \Ekomobile\Retry\Retry($operation, $backoff, $notify); $retry();