Pool::recover

(PHP 8.6+, True Async 1.0)

public Pool::recover(): void

Переводить пул у стан RECOVERING. У цьому стані пул пропускає обмежену кількість запитів для перевірки доступності сервісу. Якщо запити успішні, Circuit Breaker автоматично переводить пул у стан ACTIVE. Якщо запити продовжують завершуватися з помилками, пул повертається до стану INACTIVE.

Параметри

Цей метод не приймає параметрів.

Значення, що повертається

Значення не повертається.

Приклади

Приклад #1 Спроба відновлення

<?php

use Async\Pool;
use Async\CircuitBreakerState;

$pool = new Pool(
    factory: fn() => new HttpClient('https://api.example.com'),
    max: 10
);

// Pool is deactivated, try to recover
if ($pool->getState() === CircuitBreakerState::INACTIVE) {
    $pool->recover();
    echo "Pool transitioned to recovery mode\n";
    // Circuit Breaker will allow probe requests through
}

Приклад #2 Періодичні спроби відновлення

<?php

use Async\Pool;
use Async\CircuitBreakerState;

spawn(function() use ($pool) {
    while (!$pool->isClosed()) {
        if ($pool->getState() === CircuitBreakerState::INACTIVE) {
            $pool->recover();
        }

        suspend(delay: 10000); // check every 10 seconds
    }
});

Дивіться також