>  기사  >  백엔드 개발  >  Zend 엔진의 PHP 커널에 대한 자세한 설명

Zend 엔진의 PHP 커널에 대한 자세한 설명

黄舟
黄舟원래의
2017-03-09 09:36:466325검색

이전 장에서는 PHP의 라이프사이클, PHP의 SAPI, SAPI가 전체 PHP 아키텍처의 상위 레벨에 있으며 실제 스크립트의 실행에 대해 소개했습니다. 주로 Zend 엔진에 의해 완성됩니다. 이 섹션에서는 PHP 스크립트의 실행을 소개합니다.

현재 프로그래밍 언어는 크게 두 가지 범주로 나눌 수 있습니다.

  • 첫 번째 범주는 C/C++, .NET, Java와 같습니다. 컴파일된 언어에는 한 가지 공통점이 있습니다. 실행하기 전에 소스 코드를 컴파일한 다음 컴파일된 개체 파일을 실행해야 한다는 것입니다.

  • 두 번째 범주는 PHP, Javascript, Ruby, Python 및 기타 해석 언어이며 컴파일 없이 실행할 수 있습니다.

이라고 이해하면 실제로 기계가 직접 이해할 수는 없으므로 이러한 언어는 어떻게 실행되는가? 일반적으로 이러한 언어에는 통역사가 필요하며 통역사는 소스 코드를 실행합니다. 실제로 이러한 언어는 여전히 컴파일 프로세스를 거치지만 일반적으로 실행 시 실시간으로 컴파일됩니다. 효율성을 위해 모든 언어가 실행될 때마다 다시 컴파일되지는 않습니다. 예를 들어 Python과 같은 PHP의 다양한 opcode 캐시 확장(예: APC, xcache, eAccelerator 등)은 컴파일된 중간 내용을 저장합니다. 실행될 때마다 다시 컴파일하여 발생하는 성능 손실을 방지하기 위해 pyc/pyo 파일로 저장합니다.

<?php
$str = "Hello, Tipi!\n";
echo $str;
?>


PHP 스크립트를 실행하려면 다음과 같은 인터프리터도 필요합니다. 명령줄 PHP 프로그램 또는 Apache의 mod_php 모듈 등 이전 섹션에서는 PHP의 SAPI 인터페이스에 대해 언급했습니다. PHP 명령줄 프로그램을 예로 들어 PHP 스크립트가 실행되는 방법을 설명하겠습니다. 예를 들어 다음 PHP 스크립트는 다음과 같습니다.

위 코드가 hello.php라는 파일에 저장되어 있다고 가정합니다. PHP 명령줄 프로그램을 사용하여 이 스크립트를 실행합니다.

$ php ./hello.php

이 코드의 출력은 분명히 Hello, Tipi!입니다. 그렇다면 스크립트를 실행할 때 PHP/Zend는 무엇을 했나요? 이 명령문은 어떻게 PHP에서 이 단락을 출력하게 합니까? 다음은 이를 단계별로 소개합니다.




즉, 어휘 분석 => > ; opcode(중간 코드) 컴파일 => Zend Engineer가







위 내용은 Zend 엔진의 PHP 커널에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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