Scope::asNotSafely
(PHP 8.6+, True Async 1.0)
public function asNotSafely(): Scope
스코프를 “안전하지 않음”으로 표시합니다. 이러한 스코프에서 disposeSafely()를 호출하면 코루틴은 좀비가 되지 않고 대신 취소 신호를 받습니다. 이는 완료 보장이 필요하지 않은 백그라운드 작업에 유용합니다.
이 메서드는 동일한 스코프 객체를 반환하여 메서드 체이닝(플루언트 인터페이스)을 가능하게 합니다.
반환값
Scope — 동일한 스코프 객체 (메서드 체이닝용).
예제
예제 #1 백그라운드 작업용 스코프
<?php
use Async\Scope;
$scope = (new Scope())->asNotSafely();
$scope->spawn(function() {
while (true) {
// 백그라운드 작업: 캐시 정리
cleanExpiredCache();
\Async\delay(60_000);
}
});
// disposeSafely()를 사용하면 코루틴은 좀비가 되는 대신 취소됩니다
$scope->disposeSafely();
예제 #2 inherit와 함께 사용
<?php
use Async\Scope;
$parentScope = new Scope();
$bgScope = Scope::inherit($parentScope)->asNotSafely();
$bgScope->spawn(function() {
echo "Background process\n";
\Async\delay(10_000);
});
// 종료 시: 코루틴은 좀비가 아닌 취소됩니다
$bgScope->disposeSafely();
참고
- Scope::disposeSafely — 스코프를 안전하게 닫기
- Scope::dispose — 스코프를 강제로 닫기
- Scope::cancel — 모든 코루틴 취소