PHP 작동 모드:
PHP의 두 가지 작동 모드는 WEB 모드와 CLI 모드입니다. 모드에 관계없이 PHP는 동일하게 작동하며 SAPI로 실행됩니다.
1. 터미널에 php 명령을 입력하면 CLI를 사용합니다.
이 요청을 완료하기 위해 PHP를 지원하는 웹 서버와 같습니다. 요청이 완료된 후 제어권이 터미널로 반환됩니다.
2. Apache 또는 다른 웹 서버를 호스트로 사용하는 경우 요청이 오면 PHP는 요청 완료를 지원합니다. 일반적으로:
다중 프로세스(보통 PHP 요청을 처리하기 위해 Apache 모듈로 컴파일됨)
다중 스레딩 모드
간단한 실행 프로세스:
1 PHP는 Apache 시작과 함께 실행됩니다.
2. PHP는 mod_php5.so 모듈(특히 SAPI, 서버 애플리케이션 프로그래밍 인터페이스)을 통해 Apache에 연결됩니다.3. PHP에는 커널, Zend 엔진, 확장 레이어의 총 세 가지 모듈이 있습니다.4. PHP 커널은 요청, 파일 스트림, 오류 처리 및 기타 관련 작업을 처리하는 데 사용됩니다. ZE(Zend Engine)는 소스 파일을 기계 언어로 변환한 다음 가상 머신에서 실행하는 데 사용됩니다. 확장 계층은 PHP가 특정 작업을 수행하는 데 사용하는 함수, 라이브러리 및 스트림의 집합입니다. 예를 들어, MySQL 데이터베이스에 연결하려면 MySQL 확장이 필요합니다. 7. ZE가 프로그램을 실행할 때 여러 확장에 연결해야 할 수도 있습니다. 이때 ZE는 제어권을 확장에 넘겨주고 이후에 이를 반환합니다. 8. 마지막으로 ZE는 프로그램 실행 결과를 PHP 커널로 반환하고, 그 결과를 SAPI 레이어로 전송하고 최종적으로 브라우저로 출력합니다. PHP 실행의 여러 단계:
SAPI는 다음 단계를 통해 PHP를 실행합니다. 1. 모듈 초기화 단계(Module init) :
즉, 각 확장 소스 코드에서 PHP_MINIT_FUNCTION을 호출하는 방법 모듈, 모듈에 필요한 일부 변수 적용, 메모리 할당 등 2. 요청 초기화 단계(Request init): 클라이언트의 요청을 받은 후 각 확장의 PHP_RINIT_FUNCTION에 있는 메소드를 호출하여 PHP 스크립트의 실행 환경을 초기화합니다. 3. PHP 스크립트 실행 4. 요청 종료: 이때, 각 확장의 PHP_RSHUTDOWN_FUNCTION 메서드가 호출되어 요청 사이트를 정리하고 ZE는 변수와 메모리를 재활용하기 시작합니다. 5. 모듈 종료: 웹 서버가 종료되거나 명령줄 스크립트가 실행되고 종료되면 확장 소스 코드의 PHP_MSHUTDOWN_FUNCTION 메서드가 다양한 상황에서 SAPI 수명 주기에 호출됩니다.1 .프로세스 SAPI 라이프사이클. (CGI)CLI/CGI 모드 PHP는 단일 프로세스 SAPI 모드에 속합니다. 이 유형의 요청은 요청을 한 번 처리한 후 종료됩니다. 즉, 각 요청은 시작 - 시작 요청 - 닫기 요청 - 종료 단계를 반복합니다. 확장 프로그램 초기화에 많은 리소스가 소모되는 것을 확인할 수 있습니다.
2. 다중 프로세스 SAPI 수명 주기. (MPM의 perfork 방식) 보통 PHP는 PHP 요청(mod_php)을 처리하기 위해 아파치 모듈로 컴파일됩니다. Apache는 일반적으로 다중 프로세스 모드를 채택합니다. Apache가 시작된 후 여러 하위 프로세스를 분기합니다(Apache는 분기를 시작할 프로세스 수를 지정할 수 있음). 각 프로세스의 메모리 공간은 독립적이며 각 하위 프로세스는 종료되는 즉시 시작 및 종료 단계를 거칩니다.3. 다중 스레드 SAPI 수명 주기. (FastCGI 또는 MPM 작업 모드의 단일 프로세스)
멀티 스레딩 모드는 다중 프로세스의 프로세스와 유사합니다. 이 모드에서는 하나의 서버 프로세스만 실행되지만 많은 스레드가 동시에 실행되므로 일부 리소스 오버헤드를 줄이기 위해 Module init 및 Module shutdown은 한 번만 실행하면 되며 일부 전역 변수는 한 번만 초기화하면 됩니다. 스레드의 고유한 특성으로 인해 요청 간에 일부 데이터를 편리하게 공유할 수 있습니다.
관련 권장 사항:PHP 비디오 튜토리얼:
https://www.php.cn/course/list/29/type/2.html위 내용은 PHP 라이프사이클 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!