Fiber: 협력적 동시성
Fiber로 PHP 실행을 일시 중지하고 재개해 비동기와 유사한 패턴을 구현합니다.
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 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- Match 표현식 및 명명된 인수
- Nullsafe 연산자 및 유니언 형식
- 열거형(Enum)
- Fiber: 협력적 동시성