Pool::close
(PHP 8.6+, True Async 1.0)
php
public Pool::close(): voidSchliesst den Ressourcenpool. Alle unbenutzten Ressourcen werden ueber den destructor zerstoert (falls einer angegeben wurde). Alle Coroutinen, die ueber acquire() auf eine Ressource warten, erhalten eine PoolException. Nach dem Schliessen werfen alle Aufrufe von acquire() und tryAcquire() eine Ausnahme.
Parameter
Diese Methode nimmt keine Parameter entgegen.
Rueckgabewert
Es wird kein Wert zurueckgegeben.
Beispiele
Beispiel #1 Ordnungsgemaesses Herunterfahren
php
<?php
use Async\Pool;
$pool = new Pool(
factory: fn() => new PDO('mysql:host=localhost;dbname=app', 'user', 'pass'),
destructor: function(PDO $pdo): void {
// Alle vorbereiteten Anweisungen und Verbindung schliessen
},
min: 2,
max: 10
);
// ... mit dem Pool arbeiten ...
// Pool beim Herunterfahren der Anwendung schliessen
$pool->close();Beispiel #2 Wartende Coroutinen erhalten eine Ausnahme
php
<?php
use Async\Pool;
use Async\PoolException;
$pool = new Pool(
factory: fn() => new \stdClass(),
max: 1
);
$resource = $pool->acquire(); // die einzige Ressource genommen
spawn(function() use ($pool) {
try {
$pool->acquire(); // wartet auf Freigabe
} catch (PoolException $e) {
echo "Pool geschlossen: {$e->getMessage()}\n";
}
});
$pool->close(); // wartende Coroutine erhaelt PoolExceptionSiehe auch
- Pool::isClosed --- Pruefen, ob der Pool geschlossen ist
- Pool::__construct --- Einen Pool erstellen