Pool::close

(PHP 8.6+, True Async 1.0)

public Pool::close(): void

Закриває пул ресурсів. Усі вільні ресурси знищуються через destructor (якщо він був наданий). Усі корутини, що очікують ресурс через acquire(), отримують PoolException. Після закриття будь-які виклики acquire() та tryAcquire() викидають виняток.

Параметри

Цей метод не приймає параметрів.

Значення, що повертається

Значення не повертається.

Приклади

Приклад #1 Коректне завершення роботи

<?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();

Приклад #2 Корутини, що очікують, отримують виняток

<?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

Дивіться також