>  기사  >  백엔드 개발  >  PHP란? - PHP 아키텍처 및 원리 개요

PHP란? - PHP 아키텍처 및 원리 개요

silencement
silencement앞으로
2019-12-21 18:02:0010642검색

PHP란? - PHP 아키텍처 및 원리 개요

제가 처음 PHP를 배우기 시작했을 때 많은 면접관들이 PHP가 무엇인지 자주 묻곤 했던 것을 기억합니다. 당시의 표준적인 대답은 PHP는 약한 유형의 동적 스크립트 프로그래밍 언어이자 오픈 소스이며

무료이며 하이퍼텍스트라는 것이었습니다. . 전처리기의 약어입니다.

이것은 매우 피상적인 설명일 뿐입니다. PHP는 제게는 도구입니다. 제 손에 있는 망치입니다. 하지만 이 망치는 종종 양쪽에 못 제거제가 달린 망치로 비웃음을 받습니다.

다중 프로세스 모델

PHP는 다중 프로세스 모델로 설계되었습니다. 이 모델의 장점은 요청이 서로 간섭하지 않으며 하나의 요청이 실패해도 처음처럼 다른 프로세스에 영향을 미치지 않는다는 것입니다. 개인 웹사이트에만 사용됩니다. 도구 세트의 설계에는 아무런 문제가 없습니다. PHP의 적용 범위가 커지고 방문 횟수가 증가함에 따라 프로세스 시작 비용이 비용 효율적이지 않기 때문에 이 방법은 분명히 부적절합니다. 대규모 요청이므로 이제 PHP는 기본적으로 모두 PHP 프로세스 관리자인 PHP-FPM의 관리 하에 실행됩니다. 이는 메모리에 상주하며 요청이 들어오면 처리를 위해 프로세스를 할당합니다. PHP 프로세스가 처리된 후 프로세스를 재활용하지만 프로세스가 파괴되지 않으므로 PHP가 트래픽이 많은 액세스 요청에 대처할 수 있습니다.

물론, 이제 PHP가 웹 요청을 보다 효율적으로 처리할 수 있게 해주는 PHP 멀티스레드 솔루션과 코루틴 기반 솔루션이 있습니다.

약한 유형

JAVA 및 C/C++와 달리 PHP는 유형이 선언된 순간에 결정될 필요가 없으며 유형도 런타임에 명시됩니다. 암시적 유형 변경은 PHP 개발 및 응용 프로그램이 빠르고 편리한 이유 중 하나입니다.

Others

Zend 엔진 + Ext 확장 모드는 내부 결합을 줄이고 PHP 자체에 기능을 쉽게 추가하고 제거할 수 있습니다.

구문이 간단하고 필수 사양이 많지 않습니다. 프로그래밍 스타일은 절차적 또는 객체 지향 방식으로 개발할 수 있으며 물론 기능적 스타일도 사용할 수 있습니다.

현재 주류 버전인 PHP, PHP7 및 PHP5를 사용하면 아키텍처는 위 그림과 같습니다. 주로 아래에서 위로 Zend 엔진, 확장, SAPI 인터페이스 및 상위의 4개 계층으로 구성됩니다. -레이어 적용.

Zend Engine

Zend 엔진은 PHP4 이후에 PHP에 추가되었습니다. 이는 원래 PHP 인터프리터를 다시 작성한 것입니다. 이는 완전히 C 언어를 사용하여 개발되었으므로 PHP는 C로 작성된 프로그래밍 언어로 이해될 수 있습니다. 소프트웨어와 엔진의 기능은 PHP 코드를 JAVA의 ByteCode(바이트코드)와 유사한 opcode라는 중간 언어로 변환하는 것입니다.

엔진은 PHP 코드에 대해 4단계를 수행합니다:

어휘 분석 스캐닝(렉싱), PHP 코드를 언어 조각(토큰)으로 변환. 구문 분석, 토큰을 간단하고 의미 있는 표현으로 변환합니다. 컴파일 컴파일은 표현식을 Opcode로 컴파일합니다. Execution을 실행하고 Opcode를 순차적으로 하나씩 실행하여 PHP 코드로 표현되는 기능을 구현합니다.

APC, Opchche 이러한 확장은 Opcode를 캐시하여 PHP 애플리케이션의 실행 속도를 높일 수 있으며, 요청이 다시 올 때 처음 세 단계를 생략할 수 있습니다.

엔진은 기본 데이터 구조, 메모리 할당 및 관리도 구현하고 외부 호출에 해당하는 API 메서드를 제공합니다.

확장 확장

일반적인 내장 기능과 표준 라이브러리는 확장을 통해 구현됩니다. 이를 PHP의 핵심 확장이라고 합니다. 사용자는 자신의 요구 사항에 따라 PHP 확장을 설치할 수도 있습니다.

SAPI

SAPI는 Server Application Programing Interface의 약어입니다. 중국어는 PHP가 일련의 후크 기능을 통해 주변 장치와 데이터를 교환할 수 있도록 해줍니다. SAPI는 PHP와 외부 환경 간의 에이전트입니다. 외부 환경을 추상화한 후 내부 PHP에 대해 고정되고 통합된 인터페이스 집합을 제공하므로 PHP 자체 구현은 복잡한 외부 환경에 영향을 받지 않고 어느 정도 독립성을 유지할 수 있습니다.

SAPI의 분리를 통해 PHP는 더 이상 다양한 애플리케이션과의 호환성을 고려할 수 없으며 애플리케이션 자체도 자체 특성에 따라 다양한 처리 방법을 구현할 수 있습니다.

상위 계층 애플리케이션

프로그래머가 작성한 PHP 프로그램은 웹 애플리케이션이든 Cli 모드에서 실행되는 애플리케이션이든 상위 계층 애플리케이션이며 이를 작성하는 것이 PHP 프로그래머의 주요 임무입니다.

요약

안드로이드의 아키텍처는 PHP의 아키텍처와 매우 비슷해 보이기 때문에 안드로이드 개발을 공부한 사람이라면 이러한 내용을 훨씬 더 쉽게 이해할 수 있습니다. 이것을 이해하면 PHP의 창시자가 PHP 개발에는 실제로 프레임워크가 필요하지 않다고 말한 이유를 이해할 수 있습니다. 왜냐하면 PHP 자체의 디자인은 자동차에 비유하면 PHP 자체가 프레임워크와 비슷하기 때문입니다. Zend는 엔진이고 Ext는 바퀴, 스티어링 휠 및 기타 자동차 구성 요소이며 SAPI는 도로입니다.

이 콘텐츠가 다소 쓸모없다고 생각할 수도 있습니다. 왜냐하면 많은 사람들은 자신이 단지 운전자일 뿐이라는 편집증에 빠져 있기 때문입니다. 왜 운전자는 자동차가 어떻게 작동하는지 이해해야 합니까? 저도 그렇게 생각했었는데, 예전에 라라벨 문서를 번역할 때 라라벨 작가님이 저에게 영감을 주셨고, 이 글을 읽으시는 분들께도 다음과 같은 말을 전합니다.

"실제 세계"에서 어떤 도구를 사용할 때, 도구의 작동 방식을 이해하면 도구 사용이 더 편해질 것입니다. 애플리케이션 개발도 마찬가지다. 개발 도구의 작동 방식을 이해하면 도구 사용에 더욱 익숙해질 것입니다.

이 문서의 목적은 Laravel 프레임워크의 작동 방식과 작동 방식에 대한 더 나은 이해를 제공하는 것입니다. 프레임워크에 대한 포괄적인 이해를 가짐으로써 모든 것이 덜 "마법적"이 될 것이며 애플리케이션 구축에 더 자신감을 갖게 될 것입니다.

위 내용은 PHP란? - PHP 아키텍처 및 원리 개요의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 juejin.im에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제