重试失败的操作。

5.0.0 2022-10-31 20:14 UTC

README

Latest version Total downloads Build status Test coverage Code style

Retry 提供了一个重试失败操作的功能,可选支持 Fiber。如果一个操作抛出异常,则被视为失败。这个库是对 Igor Wiedler 的 retry 的重写,但旨在保持对原始精神的忠实。

要求

用法

retry 函数使用可选的异常处理程序重试指定次数的操作。

如果指定了异常处理程序,它将在重试操作之前立即被调用。如果处理程序返回 false,则不会重试操作。

retry(int $times, callable $operation, callable $onError = null);
  • $times - 操作可能运行的最多次数。
  • $operation - 要运行的操作,最多运行指定次数。
  • $onError - 可选。接收抛出的异常作为其第一个参数的异常处理程序。

注意在原始库中,$times 指定了重试次数的数量,因此操作可以运行多达 $times + 1 次。在本版本中,$times 指定了操作可能运行的次数,因此如果指定为零(0),则不会运行。

示例

以下代码片段尝试通过 HTTP 从 URL 获取数据,最多重试五次。

use function ScriptFUSION\Retry\retry;

$response = retry(5, function () use ($url) {
    return HttpConnector::fetch($url);
});