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
);

// Пул деактивирован, пробуем восстановить
if ($pool->getState() === CircuitBreakerState::INACTIVE) {
    $pool->recover();
    echo "Пул переведён в режим восстановления\n";
    // Circuit Breaker будет пропускать пробные запросы
}

Пример #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); // проверять каждые 10 секунд
    }
});

См. также