Files
yycea/addons/wdsxh/library/alibabacloud/darabonba/src/RetryPolicy/RandomBackoffPolicy.php
2026-03-17 09:56:06 +08:00

27 lines
782 B
PHP

<?php
namespace AlibabaCloud\Dara\RetryPolicy;
use AlibabaCloud\Dara\Exception\DaraException;
use AlibabaCloud\Dara\RetryPolicy\BackoffPolicy;
class RandomBackoffPolicy extends BackoffPolicy {
private $period;
private $cap;
public function __construct(array $option) {
parent::__construct($option);
if (!isset($option['period'])) {
throw new DaraException([], "Period must be specified.");
}
$this->period = $option['period'];
$this->cap = isset($option['cap']) ? $option['cap'] : 20000;
}
public function getDelayTime($ctx) {
$randomTime = mt_rand(0, $ctx->getRetryCount() * $this->period);
return ($randomTime > $this->cap) ? $this->cap : $randomTime;
}
}