graceas / php-retry
一个用于重试可能失败的操作的库。
v0.0.3
2019-12-23 04:41 UTC
Requires
- php: >=5.5.9
Requires (Dev)
- phpunit/phpunit: ^7.0
This package is auto-updated.
Last update: 2024-09-23 15:15:36 UTC
README
一个用于重试可能失败的操作的库。
安装
通过composer
"require": {
...
"graceas/php-retry": "v0.0.3"
...
}
使用(一般示例)
$retry = new Retry();
$i = 0;
$retry->retry(
new RetryAction(
// can pass any action that can fail (database query, curl loading, etc)
function() use (&$i) {
// simulate non-periodic error (eg broken database connection)
$i++;
return ($i > 3) ? $i : 1 / 0;
},
4 // expect 4 as result for callable function
),
new LinearRetryStrategy(10 /* timeout ms */, 5 /* retrying times */)
);
if ($retry->isSuccess()) {
// task success
} else {
// task failed
// echo $retry->getLog();
}
示例输出
echo $retry->getLog();
> 1577074792: [1 of 5] [sleep 10] Division by zero in /Users/gorelov/projects/php-retry/tests/RetryTest.php on line 52
> 1577074792: [2 of 5] [sleep 10] Division by zero in /Users/gorelov/projects/php-retry/tests/RetryTest.php on line 52
> 1577074792: [3 of 5] [sleep 10] Division by zero in /Users/gorelov/projects/php-retry/tests/RetryTest.php on line 52
> 1577074977: [4 of 5] [sleep 10] success
退避策略
LinearRetryStrategy - 每次尝试等待配置的时间。
ExponentialRetryStrategy - 基础延迟时间计算为:时间 ^ 尝试次数,其中尝试次数是已进行的失败尝试次数。