인터넷의 빠른 발전으로 PHP는 인기있는 서버 측 스크립팅 언어로서 다양한 개발 프로젝트에서 널리 사용되었습니다. 그러나 많은 개발자들은 PHP의 내부 작업 메커니즘에 대해 거의 알지 못합니다. 이 기사는 PHP 커널에 대한 심층적 인 이해를 얻고 자하는 개발자를위한 초보자 안내서를 제공합니다.
PHP의 컴파일 프로세스는 먼저 소스 코드를 Lexer를 통해 토큰으로 변환 한 다음 이러한 토큰을 AST (Abstract Syntax Tree)로 변환하고 마지막으로 통역사 또는 컴파일러에 의해 실행 가능한 기계 코드를 생성합니다.
PHP 실행은 해석 실행 및 컴파일 실행의 두 단계로 나뉩니다. 해석 실행 단계에서 PHP는 소스 코드를 라인별로 구문 분석하고 해당 작업을 수행합니다. 컴파일 및 실행 단계에서 소스 코드는 중간 코드 (OPCode)로 변환되고 메모리에 저장되어 실행 효율성을 향상시킵니다.
Zend 엔진은 PHP 커널의 핵심이며 PHP 소스 코드를 중간 코드로 변환하여 실행하는 데 도움이됩니다. PHP의 실행 엔진으로서 Zend 엔진은 PHP 언어의 영혼입니다.
PHP 커널에는 강력한 메모리 관리 메커니즘이 있으며, 이는 변수, 기능 및 클래스와 같은 데이터 구조의 할당 및 재활용을 효율적으로 관리하는 데 사용됩니다.
PHP 커널은 확장 메커니즘을 지원하므로 개발자는 PHP 기능을 향상시키기 위해 사용자 정의 확장 모듈을 만들 수 있습니다. 확장은 동적으로로드 또는 제거 할 수 있으며 PHP 내부 기능을 호출 할 수 있습니다.
PHP 커널은 각 변수에 대한 메모리를 할당하고 변수가 더 이상 사용되지 않을 때 메모리를 해방시킵니다. 다음 샘플 코드는 PHP가 변수를 생성하고 파괴하는 방법을 보여줍니다.
<?php $a = "Hello"; // 문자열 변수를 만듭니다 unset($a); // 변수를 파괴하십시오 ?>
PHP는 기준 계수 메커니즘을 사용하여 변수의 참조 수를 추적합니다. 변수가 참조되면 참조 수가 증가합니다. 참조가 없으면 참조 수가 줄어 듭니다. 참조 수가 0 일 때만 PHP는 해당 메모리 공간을 확보합니다. 예는 다음과 같습니다.
<?php $a = "Hello"; // 문자열 변수를 만듭니다 $b = $a; // 변수 간의 할당은 참조 패스입니다 unset($a); // 변수를 파괴하십시오 ?>
PHP 커널은 기준 계수 외에도 쓸모없는 메모리 공간을 주기적으로 자유롭게 해제하기위한 쓰레기 수집 메커니즘을 구현합니다. 쓰레기 수집기는 메모리를 스캔하고 더 이상 사용되지 않는 변수를 결정하고 메모리를 해방시킵니다.
이 기사는 PHP7 기본 개발의 핵심 개념을 간략하게 소개하고 PHP 커널의 구조 및 메모리 관리 메커니즘에 중점을 둡니다. 이러한 내용이 개발자가 PHP의 기본 작업 원칙을 이해하고 PHP 커널을 더 탐구하는 데 관심을 자극하는 데 도움이되기를 바랍니다.