timeout

(PHP 8.6+, True Async 1.0)

timeout() — 지정된 밀리초 후에 트리거되는 Async\Timeout 객체를 생성합니다.

설명

timeout(int $ms): Async\Awaitable

$ms 밀리초 후에 Async\TimeoutException을 던지는 타이머를 생성합니다. await() 및 기타 함수에서 대기 시간 제한기로 사용됩니다.

매개변수

ms 밀리초 단위의 시간입니다. 0보다 커야 합니다.

반환 값

Async\Completable을 구현하는 Async\Timeout 객체를 반환합니다.

오류/예외

예제

예제 #1 await()에서의 타임아웃

<?php
use function Async\spawn;
use function Async\await;
use function Async\timeout;
use Async\TimeoutException;

$coroutine = spawn(function() {
    return file_get_contents('https://slow-api.example.com');
});

try {
    $result = await($coroutine, timeout(3000));
} catch (TimeoutException $e) {
    echo "3초 안에 요청이 완료되지 않았습니다\n";
}
?>

예제 #2 태스크 그룹에서의 타임아웃

<?php
use function Async\spawn;
use function Async\await_all_or_fail;
use function Async\timeout;

try {
    $results = await_all_or_fail([
        spawn(file_get_contents(...), 'https://api/a'),
        spawn(file_get_contents(...), 'https://api/b'),
    ], timeout(5000));
} catch (Async\TimeoutException $e) {
    echo "5초 안에 모든 요청이 완료되지 않았습니다\n";
}
?>

예제 #3 타임아웃 취소

<?php
use function Async\timeout;

$timer = timeout(5000);

// 작업이 더 빨리 완료됨 — 타이머 취소
$timer->cancel();
?>

같이 보기