라이브러리

[PHP] parallelFuture::cancel - 취소




PHP에서 ParallelFuture::cancel 사용하기

PHP 8.1 버전부터는 ParallelFuture 클래스가 제공되며, 비동기 작업을 취소하는 기능을 제공합니다. 이 클래스는 Future 인터페이스를 구현하며, 비동기 작업의 결과를 기다리는 동안 취소할 수 있습니다.

ParallelFuture::cancel 사용법


`cancel()` 메소드는 비동기 작업을 취소합니다. 취소된 작업은 `isCancelled()` 메소드를 통해 확인할 수 있습니다.

#hostingforum.kr
php

use ParallelFuture;



$future = Future::make(function () {

    // 비동기 작업

    sleep(5);

    return '비동기 작업 완료';

});



// 취소

$future->cancel();



// 취소 여부 확인

if ($future->isCancelled()) {

    echo "비동기 작업이 취소되었습니다.
";

} else {

    echo "비동기 작업이 취소되지 않았습니다.
";

}



예제: 병렬로 작업 수행하기


다음 예제에서는 병렬로 작업을 수행하고, 취소하는 방법을 보여줍니다.

#hostingforum.kr
php

use ParallelFuture;



// 비동기 작업 1

$future1 = Future::make(function () {

    sleep(2);

    return '비동기 작업 1 완료';

});



// 비동기 작업 2

$future2 = Future::make(function () {

    sleep(3);

    return '비동기 작업 2 완료';

});



// 병렬로 작업 수행

$future = Future::make(function () use ($future1, $future2) {

    return [$future1->wait(), $future2->wait()];

});



// 취소

$future->cancel();



// 취소 여부 확인

if ($future->isCancelled()) {

    echo "비동기 작업이 취소되었습니다.
";

} else {

    echo "비동기 작업이 취소되지 않았습니다.
";

}



// 결과 확인

try {

    $result = $future->wait();

    print_r($result);

} catch (Exception $e) {

    echo "비동기 작업이 취소되었습니다.
";

}



예제: 병렬로 작업 수행하기 (병렬로 5개의 작업)


다음 예제에서는 병렬로 5개의 작업을 수행하고, 취소하는 방법을 보여줍니다.

#hostingforum.kr
php

use ParallelFuture;



// 비동기 작업 1

$future1 = Future::make(function () {

    sleep(2);

    return '비동기 작업 1 완료';

});



// 비동기 작업 2

$future2 = Future::make(function () {

    sleep(3);

    return '비동기 작업 2 완료';

});



// 비동기 작업 3

$future3 = Future::make(function () {

    sleep(4);

    return '비동기 작업 3 완료';

});



// 비동기 작업 4

$future4 = Future::make(function () {

    sleep(5);

    return '비동기 작업 4 완료';

});



// 비동기 작업 5

$future5 = Future::make(function () {

    sleep(6);

    return '비동기 작업 5 완료';

});



// 병렬로 작업 수행

$future = Future::make(function () use ($future1, $future2, $future3, $future4, $future5) {

    return [$future1->wait(), $future2->wait(), $future3->wait(), $future4->wait(), $future5->wait()];

});



// 취소

$future->cancel();



// 취소 여부 확인

if ($future->isCancelled()) {

    echo "비동기 작업이 취소되었습니다.
";

} else {

    echo "비동기 작업이 취소되지 않았습니다.
";

}



// 결과 확인

try {

    $result = $future->wait();

    print_r($result);

} catch (Exception $e) {

    echo "비동기 작업이 취소되었습니다.
";

}



이 예제에서는 병렬로 5개의 작업을 수행하고, 취소하는 방법을 보여줍니다. 병렬로 작업을 수행하는 경우, 취소가 발생하면 모든 작업이 취소됩니다.
  • profile_image
    나우호스팅 @pcs8404 

    호스팅포럼 화이팅!

    댓글목록

    등록된 댓글이 없습니다.

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

검색

게시물 검색