Pool::tryAcquire

(PHP 8.6+, True Async 1.0)

public Pool::tryAcquire(): mixed

차단 없이 풀에서 리소스 획득을 시도합니다. 사용 가능한 빈 리소스가 있거나 max 한도에 도달하지 않은 경우 리소스를 즉시 반환합니다. 그렇지 않으면 null을 반환합니다.

매개변수

이 메서드는 매개변수를 받지 않습니다.

반환값

풀에서 리소스를 반환하거나, 사용 가능한 빈 리소스가 없고 최대 한도에 도달한 경우 null을 반환합니다.

예제

예제 #1 리소스 획득 시도

<?php

use Async\Pool;

$pool = new Pool(
    factory: fn() => new PDO('mysql:host=localhost;dbname=app', 'user', 'pass'),
    max: 5
);

$conn = $pool->tryAcquire();

if ($conn === null) {
    echo "All connections are busy, try again later\n";
} else {
    try {
        $result = $conn->query('SELECT COUNT(*) FROM orders');
        echo "Orders: " . $result->fetchColumn() . "\n";
    } finally {
        $pool->release($conn);
    }
}

예제 #2 풀을 사용할 수 없을 때 대체 동작

<?php

use Async\Pool;

$pool = new Pool(
    factory: fn() => new CacheClient('127.0.0.1', 11211),
    max: 3
);

function getData(Pool $pool, string $key): mixed
{
    $client = $pool->tryAcquire();

    if ($client === null) {
        // 캐시 사용 불가 — 데이터베이스에서 직접 조회
        return fetchFromDatabase($key);
    }

    try {
        return $client->get($key) ?? fetchFromDatabase($key);
    } finally {
        $pool->release($client);
    }
}

같이 보기