kelunik/retry

A tiny library for retrying failed operations.

Maintainers

👁 kelunik

Package info

github.com/kelunik/retry

pkg:composer/kelunik/retry

Statistics

Installs: 21 104

Dependents: 7

Suggesters: 0

Stars: 16

Open Issues: 0

v1.0.0 2017-09-22 11:48 UTC

Requires

Requires (Dev)

Suggests

None

Provides

None

Conflicts

None

Replaces

None

MIT 106de2477890199c062fd0df0223257983a8e990

  • Niklas Keller <me.woop@kelunik.com>

This package is auto-updated.

Last update: 2026-06-25 14:13:16 UTC


README

kelunik/retry is a small library for retrying failed operations.

Installation

composer require kelunik/retry

Usage

<?php

use Amp\Loop;
use Kelunik\Retry\ConstantBackoff;
use function Kelunik\Retry\retry;

require __DIR__ . "/../vendor/autoload.php";

Loop::run(function () {
 /** @var Amp\Socket\ClientSocket $socket */
 $socket = yield retry(3, function () {
 return Amp\Socket\cryptoConnect("tcp://github.com:443");
 }, Amp\Socket\SocketException::class, new ConstantBackoff(1000));

 yield $socket->write("GET / HTTP/1.0\r\nhost: github.com\r\n\r\n");

 $buffer = "";

 while (null !== $chunk = yield $socket->read()) {
 $buffer .= $chunk;

 if (strpos($buffer, "\r\n\r\n") !== false) {
 print strstr($buffer, "\r\n\r\n", true);
 break;
 }
 }

 $socket->close();
});