Pool::getState
(PHP 8.6+, True Async 1.0)
php
public Pool::getState(): CircuitBreakerStateRestituisce lo stato attuale del Circuit Breaker del pool.
Parametri
Questo metodo non accetta parametri.
Valore di ritorno
Un valore dell'enum CircuitBreakerState:
CircuitBreakerState::ACTIVE--- il pool funziona normalmente, le risorse vengono erogate.CircuitBreakerState::INACTIVE--- il pool e' disattivato, le richieste vengono rifiutate.CircuitBreakerState::RECOVERING--- il pool e' in modalita' di ripristino, permettendo un numero limitato di richieste per verificare la disponibilita' del servizio.
Esempi
Esempio #1 Verifica dello stato del pool
php
<?php
use Async\Pool;
use Async\CircuitBreakerState;
$pool = new Pool(
factory: fn() => new HttpClient('https://api.example.com'),
max: 10
);
$state = $pool->getState();
match ($state) {
CircuitBreakerState::ACTIVE => echo "Pool is active\n",
CircuitBreakerState::INACTIVE => echo "Service unavailable\n",
CircuitBreakerState::RECOVERING => echo "Recovering...\n",
};Esempio #2 Logica condizionale basata sullo stato
php
<?php
use Async\Pool;
use Async\CircuitBreakerState;
function makeRequest(Pool $pool, string $endpoint): mixed
{
if ($pool->getState() === CircuitBreakerState::INACTIVE) {
// Usa i dati in cache invece di chiamare il servizio
return getCachedResponse($endpoint);
}
$client = $pool->acquire(timeout: 3000);
try {
return $client->get($endpoint);
} finally {
$pool->release($client);
}
}Vedi anche
- Pool::setCircuitBreakerStrategy --- Imposta la strategia
- Pool::activate --- Attivazione forzata
- Pool::deactivate --- Disattivazione forzata
- Pool::recover --- Transizione alla modalita' di ripristino