>  기사  >  백엔드 개발  >  PHP 작동 방식 - 비하인드 스토리

PHP 작동 방식 - 비하인드 스토리

Patricia Arquette
Patricia Arquette원래의
2024-11-16 06:24:03294검색

PHP(하이퍼텍스트 전처리기) - 개요

PHP는 Rasmus Lerdorf가 1994년에 개인 웹사이트를 관리하기 위해 처음 개발한 서버측 스크립트 언어입니다. 1995년에는 PHP가 대중에게 출시되어 웹 개발자가 동적 콘텐츠를 보다 쉽게 ​​만들 수 있게 되었습니다. PHP 코드는 서버 측에서 실행되므로 데이터베이스와 상호 작용하고 사용자 입력을 처리하며 동적 웹 페이지를 제공하는 웹 애플리케이션을 만드는 데 이상적입니다.

목차

  1. PHP 시작하기
  2. 컴파일러와 인터프리터란 무엇인가요?
  3. 통역사란 무엇이며 어떻게 작동하나요?
  4. 컴파일러란 무엇이며 어떻게 작동하나요?
  5. PHP는 컴파일된 언어인가요, 아니면 해석된 언어인가요?
  6. JIT 컴파일러는 PHP에서 어떻게 작동하나요?
  7. PHP 코드 실행 환경
  8. PHP 코드는 CLI를 통해 어떻게 실행되나요?
  9. PHP 코드는 웹 서버를 통해 어떻게 실행되나요?

PHP 시작하기

간단한 예부터 시작해 보겠습니다.

echo "Hello world";

컴퓨터 터미널에서 이 코드를 실행하면 터미널에 "Hello world"가 출력됩니다. 우리 컴퓨터는 0이나 1과 같은 기계어 코드만 이해할 수 있다는 것을 알고 있습니다.

  • 그런데 컴퓨터는 코드를 어떻게 이해하고 실행할까요?
  • PHP 코드는 어떻게 컴퓨터가 실행할 수 있는 형태로 변환되나요?

이를 이해하기 위해 컴퓨터가 코드를 어떻게 이해하는지 살펴보겠습니다. 컴퓨터는 이진 형식(0과 1)인 기계어 코드만 이해합니다. PHP와 같은 고급 코드를 실행하려면 기계어 코드로 변환해야 합니다. 컴파일러와 인터프리터가 작동하는 곳입니다.

컴파일러와 인터프리터란?

컴파일러와 인터프리터는 모두 프로그래밍 언어로 작성된 소스 코드를 기계어 코드로 변환하는 번역 소프트웨어 또는 프로그램입니다. 즉, 인간이 이해할 수 있는 우리가 작성한 코드는 이러한 컴파일러나 인터프리터에 의해 컴퓨터가 이해할 수 있는 기계어 코드(0과 1)로 변환되어 명령을 실행하고 우리에게 출력을 제공할 수 있습니다. 번역가를 더 잘 이해하기 위해 이들 번역가에 대한 기본 개요를 살펴보겠습니다.

통역사란 무엇이며 어떻게 작동합니까?

통역사란 고급언어로 작성된 소스코드 전체를 한 줄씩 읽어서 한 줄 한 줄을 즉시 기계어로 변환하는 일종의 번역기입니다. 코드 줄을 읽는 동안 오류가 발생하면 즉시 중지하고 프로그래머에게 오류를 보고하므로 디버깅이 더 쉬워집니다. 또한 이 한 줄씩 실행하면 컴파일러에 비해 프로세스 속도가 느려집니다.

컴파일러란 무엇이며 어떻게 작동합니까?

컴파일러는 고급언어로 작성된 소스코드 전체를 한번에 기계어로 변환하는 번역기의 일종입니다. 코드에 오류가 있는 경우 컴파일러는 전체 코드를 계속 컴파일하지만 런타임에 오류가 포착되므로 프로그래머가 오류를 식별하고 수정하기가 더 어려워집니다. 하지만 컴파일러는 전체 소스코드를 한번에 기계어 코드로 변환해주기 때문에 일반적으로 실행 시 인터프리터보다 빠른 수행을 하게 됩니다.

PHP는 컴파일된 언어인가요 아니면 해석된 언어인가요?

그러므로 대답은 PHP는 기본적으로 해석된 언어라는 것입니다. PHP 스크립트가 실행되면 PHP 인터프리터는 C나 C와 같은 컴파일된 언어처럼 미리 기계어 코드로 컴파일하는 대신 런타임에 코드를 구문 분석하고 실행합니다. 그러나 OPcache와 같은 도구를 사용한 바이트코드 캐싱과 같은 일부 최적화는 모든 요청에서 코드를 재해석하지 않도록 컴파일된 바이트코드를 저장하여 성능을 향상시킬 수 있습니다.

JIT(Just-In-Time) 컴파일 프로세스를 사용하여 PHP 코드를 실행하기 위해 Facebook에서 개발한 HHVM(HipHop Virtual Machine)과 같은 프로젝트도 있습니다. 이를 통해 PHP 코드를 중간 바이트코드로 컴파일한 다음 즉시 기계어 코드로 컴파일하여 PHP 실행 속도를 높일 수 있습니다. PHP 8을 사용하면 JIT 컴파일이 PHP에 직접 통합되어 코드의 일부를 컴파일할 수 있으므로 해석된 동작과 컴파일된 동작 사이의 경계가 더욱 모호해집니다.

JIT 컴파일러가 PHP에서 작동하는 방식

JIT(Just-In-Time 컴파일)는 코드의 일부를 미리 컴파일하는 것이 아니라 실행을 위해 "적시에" 컴파일하여 코드를 실행하는 방법입니다. 코드를 한 줄씩 읽고 실행하는 기존 해석 실행과 달리 JIT 컴파일은 런타임 중에 코드 일부가 필요하기 직전에 코드 일부를 기계어 코드로 변환합니다. 결과적으로 기계어 코드가 CPU에서 직접 실행되어 반복 해석이 필요하지 않으므로 실행 속도가 빨라집니다.

JIT 컴파일은 완전히 해석된 실행과 완전히 컴파일된 실행 사이에 있습니다. 일반적인 작동 방식은 다음과 같습니다.

  • 초기 해석: 코드는 처음에 가장 자주 사용되거나 계산 집약적인 부분을 분석하기 위해 가벼운 방식으로 코드를 해석하거나 실행합니다.

  • 즉석 컴파일: JIT 컴파일러는 자주 실행되거나 최적화가 필요한 코드 섹션인 "핫스팟"을 식별합니다. 그런 다음 런타임 중에 이러한 섹션을 기계어 코드로 컴파일합니다.

  • 실행: 컴파일된 기계어 코드가 저장되므로 향후 실행 시 다시 컴파일하지 않고도 최적화된 버전을 사용할 수 있어 성능이 향상됩니다.

PHP에서는 JIT가 PHP 8에 도입되어 자주 사용하는 함수나 루프를 실행 시 기계어 코드로 컴파일하여 더 빠르게 실행할 수 있습니다. JavaScript(예: Chrome의 V8 엔진) 및 Java와 같은 다른 언어도 유사한 성능 이점을 위해 JIT 컴파일을 사용합니다.

아래 예를 따라해 보겠습니다.

How PHP Works - Behind The Scene

첫 번째 블록에는 작성된 코드가 있습니다. 이 코드는 먼저 JIT(Just-In-Time 컴파일러)에 들어갑니다. 그런 다음 JIT가 코드를 컴파일하고 실행합니다. 이 실행 중에 JIT는 코드를 한 줄씩 읽고 각 줄을 읽은 후 즉시 기계어 코드로 변환합니다. 읽는 과정에서 한 줄에 오류가 있으면 바로 멈추고 해당 오류가 발생합니다.

이것은 우리에게 고급 PHP 코드(우리가 작성한 코드)가 컴퓨터에서 어떻게 이해되고 실행되는지에 대한 약간의 아이디어를 제공합니다.

PHP 코드를 실행하기 위한 환경

PHP 스크립트는 명령줄 인터페이스(CLI)와 웹 서버 환경이라는 두 가지 주요 환경에서 실행될 수 있습니다.

  • 명령줄 인터페이스(CLI): PHP 코드는 컴퓨터의 명령줄에서 직접 실행할 수 있습니다. 이를 통해 개발자는 브라우저 없이 자동화, cron 작업 또는 테스트 스크립트에 사용되는 스크립트를 실행할 수 있습니다.

  • 웹 서버 환경: PHP는 일반적으로 클라이언트/브라우저의 요청에 응답하여 코드가 실행되는 웹 서버 환경 내에서 실행됩니다. PHP 스크립트가 요청되면 웹 서버는 인터페이스 계층(예: CGI, FastCGI 또는 FPM)을 통해 PHP 엔진과 통신하여 스크립트를 처리하고 클라이언트에 출력을 반환합니다.

각 환경은 다양한 사용 사례를 제공하므로 PHP는 웹 및 명령줄 애플리케이션 모두에 유연한 언어가 될 수 있습니다.

PHP 코드는 CLI를 통해 어떻게 실행되나요?

우리 컴퓨터에는 다양한 목적으로 실행되는 다양한 애플리케이션이나 프로그램이 포함되어 있습니다. 그러나 이러한 응용 프로그램이나 프로그램을 실행하려고 하면 자체적으로 실행될 수 없습니다. 대신 컴퓨터의 운영 체제를 통해 실행됩니다. PHP로 코드를 작성하면 이는 컴퓨터 터미널을 통해 실행할 수 있는 프로그램이기도 합니다. 따라서 터미널을 통해 코드를 실행하면 운영 체제를 통해서도 실행됩니다.

그러면 문제는 이 애플리케이션이나 프로그램, 또는 우리가 작성한 코드가 컴퓨터 운영 체제와 어떻게 통신하는가입니다.

아래 예를 따라해 보겠습니다.

How PHP Works - Behind The Scene

여기서 운영체제와 통신하는데 사용되는 수단을 OS API(Operating System's API)라고 합니다. 위 다이어그램에 표시된 것처럼 이 OS API를 통해 애플리케이션이나 프로그램은 컴퓨터의 운영 체제와 통신할 수 있습니다. 이를 통해 PHP 코드가 컴퓨터의 터미널을 통해 실행되는 방식을 어느 정도 이해할 수 있습니다.

PHP 코드는 웹 서버를 통해 어떻게 실행됩니까?

먼저 클라이언트/브라우저에서 웹 서버로 요청을 보냅니다. 그러나 웹 서버는 PHP 엔진과 직접 통신할 수 없습니다. 웹 서버와 PHP 엔진 간의 통신을 위해 SAPI 또는 서버 API라고 하는 중간 계층이 이들 사이에서 작동합니다. 웹 서버가 PHP 엔진과 통신할 수 있도록 다양한 프로토콜이 SAPI로 사용됩니다. 이러한 프로토콜에는 CGI, FastCGI, mod_php, FPM 등이 포함됩니다. 이러한 프로토콜 중 하나는 웹 서버와 PHP 엔진 간의 통신에 사용될 수 있습니다.

아래 예를 따라해 보겠습니다.

How PHP Works - Behind The Scene

PHP 스크립트를 실행하는 데 가장 널리 사용되는 두 가지 웹 서버는 Apache와 Nginx입니다.

  • Apache 서버는 SAPI로 mod_php 프로토콜을 사용합니다.
  • Nginx 서버는 FPM 프로토콜을 SAPI로 사용합니다.

이를 통해 웹 서버에서 PHP 코드가 어떻게 실행되는지 더 잘 이해할 수 있습니다. 위 사항을 토대로

PHP 코드가 실제로 뒤에서 어떻게 작동하는지에 대한 기본 아이디어를 얻었기를 바랍니다. 도움이 되었다면 다른 사람들과 공유하는 것도 잊지 마세요.

위 내용은 PHP 작동 방식 - 비하인드 스토리의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.