라이브러리

[PHP] Fiber::start - fiber 실행 시작




PHP의 Fiber


PHP 8.1 버전부터는 `Fiber`라는 새로운 기능이 추가되었습니다. `Fiber`는 코루틴을 지원하는 기능으로, 동시성 프로그래밍을 위한 도구입니다. 코루틴은 여러 작업을 동시에 처리하는 방식으로, 하나의 스레드에서 여러 작업을 수행할 수 있습니다.

Fiber::start


`Fiber::start` 함수는 코루틴을 시작하는 함수입니다. 이 함수는 `Fiber` 객체를 생성하고, 코루틴을 시작합니다. `Fiber::start` 함수는 다음과 같은 형태를 가집니다.

#hostingforum.kr
php

Fiber::start($callback, $args = [], $context = null, $flags = 0)



* `$callback`: 코루틴을 시작할 함수입니다.
* `$args`: 함수에 전달할 인수입니다.
* `$context`: 함수의 컨텍스트입니다.
* `$flags`: 코루틴의 플래그입니다.

예제


다음 예제는 `Fiber::start` 함수를 사용하여 코루틴을 시작하는 방법을 보여줍니다.

#hostingforum.kr
php

use Fiber;



function fibonacci($n) {

    if ($n <= 1) {

        return $n;

    }

    return Fiber::jump(fibonacci($n - 1)) + Fiber::jump(fibonacci($n - 2));

}



$fiber = Fiber::new(fibonacci);

$fiber->start(10);



echo $fiber->status . "
"; // Fiber status: RUNNING

echo $fiber->yield() . "
"; // 55

echo $fiber->status . "
"; // Fiber status: SUCCEEDED



이 예제는 `fibonacci` 함수를 사용하여 10까지의 피보나치 수열을 계산하는 코루틴을 시작합니다. `Fiber::jump` 함수를 사용하여 코루틴을 점프하고, `Fiber::yield` 함수를 사용하여 코루틴의 결과를 얻습니다.

플래그


`Fiber::start` 함수의 `$flags` 인수는 코루틴의 플래그를 지정하는 데 사용됩니다. 다음 플래그가 지원됩니다.

* `FIBER_FLAG_SUSPEND`: 코루틴을 중단합니다.
* `FIBER_FLAG_CANCEL`: 코루틴을 취소합니다.
* `FIBER_FLAG_NESTED`: 코루틴을 중첩합니다.

예제 (플래그)


다음 예제는 `$flags` 인수를 사용하여 코루틴의 플래그를 지정하는 방법을 보여줍니다.

#hostingforum.kr
php

use Fiber;



function fibonacci($n) {

    if ($n <= 1) {

        return $n;

    }

    return Fiber::jump(fibonacci($n - 1)) + Fiber::jump(fibonacci($n - 2));

}



$fiber = Fiber::new(fibonacci);

$fiber->start(10, [], null, Fiber::FIBER_FLAG_SUSPEND);



echo $fiber->status . "
"; // Fiber status: SUSPENDED



이 예제는 `$flags` 인수를 사용하여 코루틴을 중단합니다.

결론


`Fiber::start` 함수는 코루틴을 시작하는 데 사용됩니다. 이 함수는 `$callback`, `$args`, `$context`, `$flags` 인수를 가집니다. `$flags` 인수는 코루틴의 플래그를 지정하는 데 사용됩니다. `$flags` 인수를 사용하여 코루틴의 플래그를 지정할 수 있습니다.
  • profile_image
    나우호스팅 @pcs8404 

    호스팅포럼 화이팅!

    댓글목록

    등록된 댓글이 없습니다.

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

검색

게시물 검색