1. Go to this page and download the library: Download gugglegum/retry-helper 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/ */
gugglegum / retry-helper example snippets
$request = new \GuzzleHttp\Psr7\Request("GET", "https://example.com");
$response = (new \gugglegum\RetryHelper\RetryHelper())
->execute(function() use ($request) {
return (new \GuzzleHttp\Client())->send($request);
}, 10);
echo $response->getBody()->getContents() . "\n";
$request = new \GuzzleHttp\Psr7\Request("GET", "https://example.com");
$response = (new \gugglegum\RetryHelper\RetryHelper())
->setIsTemporaryException(function(\Throwable $e): bool {
return $e instanceof \GuzzleHttp\Exception\ServerException
|| $e instanceof \GuzzleHttp\Exception\ConnectException;
})
->execute(function() use ($request) {
return (new \GuzzleHttp\Client())->send($request);
}, 10);
echo $response->getBody()->getContents() . "\n";
$request = new \GuzzleHttp\Psr7\Request("GET", "https://example.com");
try {
/** @var \Psr\Http\Message\ResponseInterface $response */
$response = (new \gugglegum\RetryHelper\RetryHelper())
->setIsTemporaryException(function(\Throwable $e): bool {
return $e instanceof \GuzzleHttp\Exception\ServerException
|| ($e instanceof \GuzzleHttp\Exception\ConnectException && !str_contains($e->getMessage(), 'Could not resolve host'));
})
->setDelayBeforeNextAttempt(function(int $attempt): float|int {
return $attempt * 5;
})
->setOnFailure(function(\Throwable $e, int $attempt): void {
throw new RuntimeException($e->getMessage() . " (attempt " . $attempt . ")", $e->getCode(), $e);
})
->setLogger(new class extends \Psr\Log\AbstractLogger {
public function log($level, string|Stringable $message, array $context = []): void
{
echo "[" . strtoupper($level) . "] {$message}\n";
}
})
->execute(function() use ($request) {
return (new \GuzzleHttp\Client())->send($request);
}, 10);
echo $response->getBody()->getContents() . "\n";
} catch (\Throwable $e) {
echo "\nExiting due to an error: {$e->getMessage()}\n";
}
$logger = new class extends \Psr\Log\AbstractLogger {
public function log($level, string|Stringable $message, array $context = []): void
{
echo "[" . strtoupper($level) . "] {$message}\n";
}
};
$request = new \GuzzleHttp\Psr7\Request("GET", "https://example.com");
$response = (new \gugglegum\RetryHelper\RetryHelper())
->execute(function() use ($request, $logger) {
$logger->debug("Send GET request"); // <------ Here we use logger inside main callback
return (new \GuzzleHttp\Client())->send($request);
}, 10);
function(\Throwable $e): bool { ... }
function(int $attempt): float|int { ... }
function(\Throwable $e, int $attempt): void { ... }
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.