PHP Academy · 강의

Fiber: 협력적 동시성

Fiber로 PHP 실행을 일시 중지하고 재개해 비동기와 유사한 패턴을 구현합니다.

레슨 4/413개 단계

Fiber: 협력적 동시성은(는) CoddyKit의 무료 PHP Academy 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 PHP Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. PHP Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

Fiber란 무엇인가요?

PHP 8.1에는 파이버가 도입되었습니다. 파이버는 특정 지점에서 실행을 일시 중지했다가 나중에 재개할 수 있는 경량 코루틴으로, 협력적 멀티태스킹을 가능하게 합니다.

파이버와 비동기 처리 비교

파이버는 병렬 스레드가 아닙니다. PHP는 여전히 단일 스레드로 실행됩니다. 파이버를 사용하면 하나의 실행 컨텍스트가 자발적으로 제어권을 다른 실행 컨텍스트에 넘길 수 있어 비동기와 유사한 패턴을 구현할 수 있습니다.

파이버 생성하기

생성자에 호출 가능한 함수를 전달하여 파이버를 생성합니다. start()를 호출하기 전까지 파이버는 시작되지 않습니다.

<?php
$fiber = new Fiber(function (): void {
    echo "Fiber started\n";
    $value = Fiber::suspend("first suspension");
    echo "Resumed with: $value\n";
});

시작 및 일시 중지

start()는 첫 번째 Fiber::suspend()까지 파이버를 실행합니다. suspend()에 전달한 값이 start()에서 반환됩니다.

<?php
$suspended = $fiber->start(); // runs until suspend()
echo $suspended; // "first suspension"

파이버 재개

resume($value)는 파이버가 일시 중지된 지점부터 실행을 계속합니다. resume()에 전달한 값은 파이버 내부의 Fiber::suspend()에서 반환됩니다.

<?php
$fiber->resume("hello from main");
// Inside fiber: $value = "hello from main"
// Prints: "Resumed with: hello from main"

완전한 파이버 예제

파이버의 전체 생명 주기: 생성, 시작, 일시 중지, 재개, 종료

<?php
$fiber = new Fiber(function (): string {
    $x = Fiber::suspend("paused");
    return "Fiber done, received: $x";
});

$msg = $fiber->start();   // "paused"
$fiber->resume("hi!");
echo $fiber->getReturn(); // "Fiber done, received: hi!"

파이버 상태 메서드

파이버의 상태를 확인합니다: isStarted(), isSuspended(), isRunning(), isTerminated().

<?php
var_dump($fiber->isTerminated()); // true after getReturn()

파이버의 오류 처리

$fiber->throw(new Exception(...))을 사용하여 파이버에 예외를 던집니다. 예외는 파이버 내부의 Fiber::suspend() 지점에서 발생합니다.

이벤트 루프 통합

파이버는 이벤트 루프(ReactPHP, Revolt)를 구동하도록 설계되었습니다. I/O 콜백은 대기하는 동안 일시 중지되고 데이터가 도착하면 재개됩니다.

파이버와 제너레이터 비교

제너레이터(PHP 5.5 이상)도 yield를 사용하여 일시 중지할 수 있지만, 주로 지연 반복을 위한 기능입니다. 파이버는 양방향 값 전달과 반환 값을 지원하는 더 일반적인 코루틴 메커니즘입니다.

실용적인 사용 사례

파이버는 멀티스레딩의 복잡성 없이 Revolt의 비동기 HTTP 클라이언트, 비동기 데이터베이스 쿼리, 협력적 작업 스케줄러, 스트리밍 데이터 처리 흐름을 구현하는 데 사용됩니다.

요약

파이버를 사용하면 하나의 PHP 실행 환경을 일시 중지했다가 재개할 수 있어 협력적 동시성을 구현할 수 있습니다. 파이버는 최신 PHP 비동기 프레임워크의 기반입니다. Fiber::suspend()는 제어권을 넘기고, resume()은 제어권을 되찾습니다.

빠른 확인

일시 중지된 파이버에 값을 전달하려면 어떻게 해야 합니까?

무료로 시작

AI 튜터와 함께 PHP을(를) 배우세요 — 무료

브라우저에서 실제 코드를 작성하고 실행하며, 24/7 AI 튜터로부터 즉각적인 도움을 받고, 웹이나 앱에서 중단한 부분부터 계속 학습하세요.

코스
49
레슨
195

자주 묻는 질문

“Fiber: 협력적 동시성” 강의는 무료인가요?

네 — “Fiber: 협력적 동시성” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 PHP Academy 강의 전체를 잠금 해제할 수 있습니다. PHP Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“Fiber: 협력적 동시성”에서 뭘 배우나요?

Fiber로 PHP 실행을 일시 중지하고 재개해 비동기와 유사한 패턴을 구현합니다. 브라우저에서 직접 실행하는 실습 코드로 PHP Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

PHP Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 PHP Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.

“Fiber: 협력적 동시성” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 PHP Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 PHP Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. Match 표현식 및 명명된 인수
  2. Nullsafe 연산자 및 유니언 형식
  3. 열거형(Enum)
  4. Fiber: 협력적 동시성
← PHP Academy(으)로 돌아가기