Pool::close

(PHP 8.6+, True Async 1.0)

public Pool::close(): void

Ferme le pool de ressources. Toutes les ressources inactives sont détruites via le destructor (si un destructeur a été fourni). Toutes les coroutines en attente d’une ressource via acquire() reçoivent une PoolException. Après la fermeture, tout appel à acquire() et tryAcquire() lève une exception.

Paramètres

Cette méthode ne prend aucun paramètre.

Valeur de retour

Aucune valeur n’est retournée.

Exemples

Exemple #1 Arrêt gracieux

<?php

use Async\Pool;

$pool = new Pool(
    factory: fn() => new PDO('mysql:host=localhost;dbname=app', 'user', 'pass'),
    destructor: function(PDO $pdo): void {
        // Close all prepared statements and connection
    },
    min: 2,
    max: 10
);

// ... work with the pool ...

// Close the pool when the application shuts down
$pool->close();

Exemple #2 Les coroutines en attente reçoivent une exception

<?php

use Async\Pool;
use Async\PoolException;

$pool = new Pool(
    factory: fn() => new \stdClass(),
    max: 1
);

$resource = $pool->acquire(); // took the only resource

spawn(function() use ($pool) {
    try {
        $pool->acquire(); // waiting for release
    } catch (PoolException $e) {
        echo "Pool closed: {$e->getMessage()}\n";
    }
});

$pool->close(); // waiting coroutine will receive PoolException

Voir aussi