라이브러리

[PHP] parallelFuture::done - 상태 감지




PHP 8.1부터는 Parallel로 병렬 처리를 지원합니다. Parallel은 병렬 처리를 위한 API를 제공하며, Future를 사용하여 비동기 처리를 할 수 있습니다.

Future


Future는 비동기 처리의 결과를 나타내는 객체입니다. Future는 비동기 처리가 완료되면 done() 메서드를 호출하여 결과를 가져올 수 있습니다.

parallelFuture::done


parallelFuture::done은 Future의 done() 메서드입니다. 이 메서드는 Future의 결과를 가져옵니다. 만약 Future가 완료되지 않았으면, 이 메서드는 TimeoutException을 발생시킵니다.

예제


#hostingforum.kr
php

use ParallelPool;



// 5초 후에 "Hello, World!"를 출력하는 Future를 생성합니다.

$future = Pool::create(function() {

    sleep(5);

    return "Hello, World!";

});



// Future의 결과를 가져옵니다.

$result = $future->done();



// 결과를 출력합니다.

echo $result . "
";



// 5초 후에 "Goodbye, World!"를 출력하는 Future를 생성합니다.

$future2 = Pool::create(function() {

    sleep(5);

    return "Goodbye, World!";

});



// Future의 결과를 가져옵니다.

$result2 = $future2->done();



// 결과를 출력합니다.

echo $result2 . "
";



예제 설명


위 예제에서는 Parallel을 사용하여 Future를 생성하고, Future의 결과를 가져오는 방법을 설명합니다.

1. `Pool::create` 메서드를 사용하여 Future를 생성합니다. 이 메서드는 callback 함수를 인자로 받습니다. callback 함수는 Future의 처리를 담당합니다.
2. Future의 결과를 가져오기 위해 `done` 메서드를 호출합니다. 만약 Future가 완료되지 않았으면, 이 메서드는 TimeoutException을 발생시킵니다.
3. 결과를 출력합니다.

병렬 처리 예제


#hostingforum.kr
php

use ParallelPool;



// 5초 후에 "Hello, World!"를 출력하는 Future를 생성합니다.

$future1 = Pool::create(function() {

    sleep(5);

    return "Hello, World!";

});



// 5초 후에 "Goodbye, World!"를 출력하는 Future를 생성합니다.

$future2 = Pool::create(function() {

    sleep(5);

    return "Goodbye, World!";

});



// Future의 결과를 가져옵니다.

$result1 = $future1->done();

$result2 = $future2->done();



// 결과를 출력합니다.

echo $result1 . "
";

echo $result2 . "
";



병렬 처리 예제 설명


위 예제에서는 Parallel을 사용하여 두 개의 Future를 생성하고, Future의 결과를 가져오는 방법을 설명합니다.

1. `Pool::create` 메서드를 사용하여 두 개의 Future를 생성합니다. 이 메서드는 callback 함수를 인자로 받습니다. callback 함수는 Future의 처리를 담당합니다.
2. Future의 결과를 가져오기 위해 `done` 메서드를 호출합니다. 만약 Future가 완료되지 않았으면, 이 메서드는 TimeoutException을 발생시킵니다.
3. 결과를 출력합니다.

병렬 처리 예제의 장점


위 예제에서 병렬 처리를 사용하면, 두 개의 Future가 동시에 처리되기 때문에, 처리 시간이 단축됩니다. 만약 Future가 순차적으로 처리되면, 처리 시간이 10초가 걸리지만, 병렬 처리를 사용하면, 처리 시간이 5초가 걸립니다.

병렬 처리 예제의 단점


위 예제에서 병렬 처리를 사용하면, Future의 결과를 가져올 때, Future가 완료되지 않았으면, TimeoutException이 발생합니다. 만약 Future가 완료되지 않았으면, Future의 결과를 가져올 수 없기 때문입니다.
  • profile_image
    나우호스팅 @pcs8404 

    호스팅포럼 화이팅!

    댓글목록

    등록된 댓글이 없습니다.

  • 전체 10,077건 / 346 페이지

검색

게시물 검색