Pool::close
(PHP 8.6+, True Async 1.0)
public Pool::close(): void
Chiude il pool di risorse. Tutte le risorse inattive vengono distrutte tramite il destructor
(se ne e’ stato fornito uno). Tutte le coroutine in attesa di una risorsa tramite acquire() ricevono
una PoolException. Dopo la chiusura, qualsiasi chiamata a acquire() e tryAcquire()
lancia un’eccezione.
Parametri
Questo metodo non accetta parametri.
Valore di ritorno
Nessun valore restituito.
Esempi
Esempio #1 Arresto controllato
<?php
use Async\Pool;
$pool = new Pool(
factory: fn() => new PDO('mysql:host=localhost;dbname=app', 'user', 'pass'),
destructor: function(PDO $pdo): void {
// Chiudi tutti i prepared statement e la connessione
},
min: 2,
max: 10
);
// ... lavora con il pool ...
// Chiudi il pool quando l'applicazione si arresta
$pool->close();
Esempio #2 Le coroutine in attesa ricevono un’eccezione
<?php
use Async\Pool;
use Async\PoolException;
$pool = new Pool(
factory: fn() => new \stdClass(),
max: 1
);
$resource = $pool->acquire(); // ha preso l'unica risorsa
spawn(function() use ($pool) {
try {
$pool->acquire(); // in attesa del rilascio
} catch (PoolException $e) {
echo "Pool closed: {$e->getMessage()}\n";
}
});
$pool->close(); // la coroutine in attesa ricevera' PoolException
Vedi anche
- Pool::isClosed — Verifica se il pool e’ chiuso
- Pool::__construct — Crea un pool