PHP의 실행 방식에 대해 궁금해하는 개발자가 많습니다. 결론부터 말하면 PHP는 기본적으로 인터프리터 방식으로 동작하지만, 내부적으로는 컴파일 과정을 거칩니다. PHP 코드는 먼저 중간 바이트코드(intermediate bytecode)로 컴파일된 후, 런타임 환경인 Zend 엔진이 이 바이트코드를 해석하며 실행합니다.
PHP 컴파일러가 담당하는 작업
- PHP 소스 코드를 런타임 엔진에서 사용할 수 있는 바이트코드로 변환합니다.
- 코드 내의 함수명, 변수명, 클래스명 등을 분석하고 해석합니다.
- 실행에 필요한 심볼 테이블(symbol table)을 생성합니다.
PHP 인터프리터(Zend 엔진)가 담당하는 작업
- 컴파일된 바이트코드를 한 줄씩 읽어가며 순차적으로 실행합니다.
- 실행 중 발생하는 런타임 예외(runtime exception)를 처리합니다.
즉, PHP는 전통적인 의미의 순수 인터프리터 언어는 아니며, '컴파일 + 인터프리팅'이 결합된 하이브리드 방식으로 동작한다고 이해할 수 있습니다. 이러한 구조 덕분에 PHP는 매 요청마다 코드를 다시 파싱하는 부담을 줄이고, OPcache와 같은 캐싱 메커니즘을 통해 바이트코드를 재사용하여 성능을 크게 향상시킬 수 있습니다.