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
}
});
Дивіться також
- Pool::activate — Примусова активація
- Pool::deactivate — Примусова деактивація
- Pool::getState — Поточний стан
- Pool::setCircuitBreakerStrategy — Налаштування стратегії