kelunik/retry

A tiny library for retrying failed operations.

v1.0.0 2017-09-22 11:48 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();
});