php-node - Node.js내에서 PHP HTTP 요청을 처리하는 핸들러

2 weeks ago 3

  • Node.js 애플리케이션 내에서 PHP 애플리케이션을 동일 프로세스에서 실행하여, 네트워크 연결 없이 Node.js와 PHP 간 통신을 가능하게 하는 모듈
    • 양방향 통신, 하이브리드 아키텍처, 레거시 PHP 자산 활용 및 마이그레이션 등이 쉬워짐
    • 이를 통해 WordPress를 Next.js 프론트엔드와 통합하는 등 다양한 하이브리드 웹앱 아키텍처를 구현할 수 있음
  • 비동기 방식(handleRequest)동기 방식(handleRequestSync) 모두 지원(동기 방식은 Node.js 스레드 블로킹)
  • x64 Linux, x64/arm64 macOS 환경을 우선 지원하며, 일부 PHP 관련 시스템 라이브러리 설치 필요
  • Request/Response/Headers 등 HTTP 객체를 Node.js에서 직접 생성/조작하여 PHP 애플리케이션과 자연스럽게 연동 가능함
  • 사용방법 // `Php` 인스턴스 생성 후 `handleRequest()`로 PHP 요청 처리 // `Request`, `Response` 객체를 활용해 직접 HTTP 요청/응답 데이터를 다룸 import { Php, Request } from '@platformatic/php-node' const php = new Php() const request = new Request({ url: 'http://example.com/foo/bar', headers: { 'X-Test': ['Hello, from Node.js!'] } }) const response = await php.handleRequest(request) console.log(response.body.toString())
  • 활용 예
    • PHP 기반 CMS(WordPress 등)를 Node.js(Next.js 등) 프론트엔드와 통합하거나, 레거시 PHP 앱을 점진적으로 Node.js로 마이그레이션
    • 두 환경 간 네트워크 오버헤드 없이 메모리 내 통신 구현 및 API 게이트웨이, SSR, 커스텀 백엔드 연동 등에 적합
  • API들
    • Php 클래스
      • new Php(config): docroot 등 설정 포함 가능
      • php.handleRequest(request): 비동기 요청 처리(Promise 반환)
      • php.handleRequestSync(request): 동기 처리(스레드 블로킹)
    • Request 클래스
      • HTTP method, url, headers, body 지정 가능
      • 각 속성 직접 접근 가능(예: request.method, request.body)
    • Response 클래스
      • status, headers, body, log 등 속성 보유
      • 수동 생성 가능(테스트, 에러 처리에 활용)
    • Headers 클래스
      • set, add, get, getAll, has, delete 등 다양한 HTTP 헤더 관리 메서드 지원
      • entries, keys, values, forEach 등 반복자 API로 헤더 일괄 처리 가능

Read Entire Article