라이브러리
[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개의 작업을 수행하고, 취소하는 방법을 보여줍니다. 병렬로 작업을 수행하는 경우, 취소가 발생하면 모든 작업이 취소됩니다.
-
- 나우호스팅 @pcs8404
-
호스팅포럼 화이팅!
댓글목록
등록된 댓글이 없습니다.