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

// ... 풀 작업 ...

// 애플리케이션 종료 시 풀 닫기
$pool->close();

예제 #2 대기 중인 코루틴이 예외를 수신

<?php

use Async\Pool;
use Async\PoolException;

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

$resource = $pool->acquire(); // 유일한 리소스를 가져감

spawn(function() use ($pool) {
    try {
        $pool->acquire(); // 해제를 대기
    } catch (PoolException $e) {
        echo "Pool closed: {$e->getMessage()}\n";
    }
});

$pool->close(); // 대기 중인 코루틴이 PoolException을 수신

같이 보기