PHP code example of crowdstar / exponential-backoff
1. Go to this page and download the library: Download crowdstar/exponential-backoff library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
crowdstar / exponential-backoff example snippets
use CrowdStar\Backoff\EmptyValueCondition;
use CrowdStar\Backoff\ExponentialBackoff;
$result = (new ExponentialBackoff(new EmptyValueCondition()))->run(
function () {
return MyClass::fetchData();
}
);
use CrowdStar\Backoff\ExceptionBasedCondition;
use CrowdStar\Backoff\ExponentialBackoff;
// Allow to catch multiple types of exceptions and throwable objects.
$backoff = new ExponentialBackoff(new ExceptionBasedCondition(Exception::class, Throwable::class));
try {
$result = $backoff->run(
function () {
return MyClass::fetchData();
}
);
} catch (Throwable $t) {
// Handle the errors here.
}
use CrowdStar\Backoff\AbstractRetryCondition;
use CrowdStar\Backoff\ExponentialBackoff;
$backoff = new ExponentialBackoff(
new class extends AbstractRetryCondition {
public function throwable(): bool
{
return false;
}
public function met($result, ?Exception $e): bool
{
return (empty($e) || (!($e instanceof Exception)));
}
}
);
$backoff->run(
function () {
return MyClass::fetchData();
}
);
use CrowdStar\Backoff\AbstractRetryCondition;
use CrowdStar\Backoff\ExponentialBackoff;
$backoff = new ExponentialBackoff(
new class extends AbstractRetryCondition {
public function met($result, ?Exception $e): bool
{
return !empty($result);
}
}
);
$result = $backoff->run(
function () {
return MyClass::fetchData();
}
);
use CrowdStar\Backoff\AbstractRetryCondition;
use CrowdStar\Backoff\EmptyValueCondition;
use CrowdStar\Backoff\ExceptionBasedCondition;
use CrowdStar\Backoff\ExponentialBackoff;
$backoff = new ExponentialBackoff(new EmptyValueCondition());
$backoff = new ExponentialBackoff(new ExceptionBasedCondition());
$backoff = new ExponentialBackoff(new ExceptionBasedCondition(Exception::class, Throwable::class));
$backoff = new ExponentialBackoff(
new class extends AbstractRetryCondition {
public function met($result, ?Exception $e): bool
{
return (empty($e) || (!($e instanceof Exception)));
}
}
);
$backoff
->setType(ExponentialBackoff::TYPE_SECONDS)
->setType(ExponentialBackoff::TYPE_MICROSECONDS)
->setMaxAttempts(3)
->setMaxAttempts(4);
$result = $backoff->run(
function () {
return MyClass::fetchData();
}
);
$result = MyClass::fetchData();
use CrowdStar\Backoff\EmptyValueCondition;
use CrowdStar\Backoff\ExponentialBackoff;
$backoff = new ExponentialBackoff(new EmptyValueCondition());
$backoff->disable();
$result = $backoff->run(function () {return MyClass::fetchData();});
use CrowdStar\Backoff\ExponentialBackoff;
use CrowdStar\Backoff\NullCondition;
$result = (new ExponentialBackoff(new NullCondition()))
->setRetryCondition(new NullCondition()) // The method here is for demonstration purpose.
->run(function () {return MyClass::fetchData();});
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.