PHP 안에 진정한 비동기
동기로 작성하고, 비동기로 실행하세요.
익숙한 함수가 동시 I/O를 지원하는 코루틴이 있는 PHP를 상상해 보세요. 깨끗하고 읽기 쉬운 코드와 최소한의 변경으로 고성능 동시성 애플리케이션을 구축하세요!
// three coroutines run at the same time
$page = spawn(fn() => file_get_contents($url));
$rows = spawn(fn() => $pdo->query($sql)->fetchAll());
$stats = spawn(fn() => file_get_contents($api));
// wait for all three, cancel after 2s
[$html, $data, $meta] = await_all_or_fail(
[$page, $rows, $stats], timeout(2000));프로덕션 준비된 API
코루틴
효율적인 동시 실행을 위한 경량 코루틴. 컬러드 async 함수 없음. spawn()만 하면 됩니다!
논블로킹 I/O
fread, fwrite, file_get_contents, ob_start, curl, MySQL, PostgreSQL. 일반 PHP 함수가 추가 노력 없이 비동기로 작동합니다.
TrueAsync Server
C로 작성된 네이티브 웹 서버. HTTP/1.1, HTTP/2, HTTP/3을 PHP 프로세스 내부에서 직접 처리합니다.
협력적 취소
코루틴 취소를 위한 간단하고 유연한 API. Scope::cancel().
구조적 동시성
Scope 샌드박스로 코루틴 수명을 제어하세요. TaskGroup으로 코루틴 그룹을 관리하세요.
PDO Pool
PDO에 내장된 연결 풀링. 최대 성능을 위한 자동 연결 관리.
Channel · ThreadPool
코루틴 간의 데이터 교환. 생산자/소비자 패턴을 위한 버퍼링 및 비버퍼링 채널. ThreadChannel로 OS 스레드 간 통신, Thread·ThreadPool로 병렬 CPU 작업.
Futures
비동기 계산을 위한 지연 결과. await_all, await_first를 통한 조합.
PHP Mobile
PHP 코어 수준의 Android 지원: native-bridge를 통해 네이티브 앱 내부에서 실행되는 비동기 런타임.
TrueAsync를 실전으로 배우기
첫 코루틴부터 구조적 동시성과 내장 서버까지, 실습 중심의 가이드입니다.
코루틴
코루틴 첫걸음: spawn()과 병행 실행.
Scope
코루틴 그룹을 소유하고, 완료를 기다리고, 함께 취소하는 주체.
PDO Pool
코루틴이 하나의 PDO 연결을 공유할 수 없는 이유와 내장 풀이 이를 투명하게 해결하는 방법.
스레드
spawn_thread와 ThreadPool: CPU 위주 작업을 위한 진짜 병렬성.
첫 서버
PHP 내부의 HTTP 서버: HttpServer, HttpServerConfig, 그리고 첫 핸들러.
WebSocket
recv 루프, 채팅방, 다른 코루틴에서의 send, 그리고 느린 클라이언트에 대한 trySend.