PHP 수명주기

步履不停
步履不停원래의
2019-06-25 17:32:005722검색

PHP 수명주기

1. PHP 작동 모드:

PHP의 두 가지 작동 모드는 WEB 모드와 CLI 모드입니다. 모드에 관계없이 PHP는 동일하게 작동하며 SAPI로 실행됩니다.

1. 터미널에 php 명령을 입력하면 CLI가 사용됩니다.

요청을 완료하기 위해 PHP를 지원하는 웹서버와 같습니다. 요청이 완료되면 제어권이 터미널로 반환됩니다.

2. Apache나 다른 웹 서버를 호스트로 사용할 때 요청이 오면 PHP는 요청 완료를 지원합니다. 일반적으로:

다중 프로세스(보통 PHP 요청을 처리하기 위해 Apache 모듈로 컴파일됨)

다중 스레드 모드

간단한 실행 프로세스: # 🎜 🎜#

1. Apache가 시작될 때 PHP가 실행됩니다.

2. PHP는 mod_php5.so 모듈(특히 SAPI, 서버 애플리케이션 프로그래밍 인터페이스)을 통해 연결됩니다. 🎜🎜#3. PHP에는 커널, Zend 엔진, 확장 계층의 세 가지 모듈이 있습니다.

4 PHP 커널은 요청, 파일 스트림, 오류 처리 및 기타 관련 작업을 처리하는 데 사용됩니다. 5. Zend 엔진(ZE)은 소스 파일을 기계어로 변환한 다음 이를 가상 머신에서 실행하는 데 사용됩니다.
6 확장 계층은 PHP가 일부 작업을 수행하는 데 사용하는 함수, 클래스 라이브러리 및 스트림의 집합입니다. 특정 작업. 예를 들어 MySQL 데이터베이스에 연결하려면 MySQL 확장이 필요합니다.
7. ZE가 프로그램을 실행할 때 여러 확장에 연결해야 할 수도 있습니다. 이때 ZE는 확장에 제어권을 넘겨주고 반환합니다. #🎜 🎜#8. 마지막으로 ZE는 프로그램 실행 결과를 PHP 커널로 반환하고, 그 결과를 SAPI 레이어로 전송하고 최종적으로 브라우저로 출력합니다.

2. PHP 실행의 여러 단계:

SAPI는 다음 단계를 통해 PHP를 실행합니다.

1. 모듈 초기화 단계(Module init) :# 🎜🎜# 즉, 각 확장 소스 코드에서 PHP_MINIT_FUNCTION의 메소드를 호출하여 모듈 초기화, 모듈에 필요한 일부 변수 적용, 메모리 할당 등을 수행하는 것입니다.

2. 요청 초기화 단계(Request init):

클라이언트의 요청을 받은 후 각 Extension의 PHP_RINIT_FUNCTION에 있는 메소드를 호출하여 PHP 스크립트의 실행 환경을 초기화합니다.

3. PHP 스크립트 실행
4. 종료 요청:
이때 각 확장의 PHP_RSHUTDOWN_FUNCTION 메서드를 호출하여 요청 사이트를 정리하고 ZE는 변수와 메모리를 재활용하기 시작합니다.
5. 모듈 종료:
웹 서버가 종료되거나 명령줄 스크립트가 실행되어 종료되면 확장 소스 코드의 PHP_MSHUTDOWN_FUNCTION 메서드가

3 으로 호출됩니다. 다양한 상황 SAPI 수명주기.

1. 단일 프로세스 SAPI 수명 주기. (CGI)

CLI/CGI 모드 PHP는 단일 프로세스 SAPI 모드에 속합니다. 이 유형의 요청은 요청을 한 번 처리한 후 종료됩니다. 즉, 각 요청은 시작 - 시작 요청 - 닫기 요청 - 종료 단계를 반복합니다. 확장 프로그램 초기화에 많은 리소스가 소모되는 것을 확인할 수 있습니다.

2. 다중 프로세스 SAPI 수명 주기. (MPM의 perfork 방식)

보통 PHP는 PHP 요청(mod_php)을 처리하기 위해 아파치 모듈로 컴파일됩니다. Apache는 일반적으로 다중 프로세스 모드를 채택합니다. Apache가 시작된 후 여러 하위 프로세스를 분기합니다(Apache는 분기를 시작할 프로세스 수를 지정할 수 있음). 각 프로세스의 메모리 공간은 독립적이며 각 하위 프로세스는 종료되는 즉시 시작 및 종료 단계를 거칩니다.

3. 멀티 스레드 SAPI 수명 주기. (FastCGI 또는 MPM 작업 모드의 단일 프로세스)

멀티 스레딩 모드는 다중 프로세스의 프로세스와 유사합니다. 이 모드에서는 하나의 서버 프로세스만 실행되지만 많은 스레드가 동시에 실행되므로 모듈 초기화 및 모듈 종료만 일부 줄일 수 있습니다. 한 번만 실행하면 되며 일부 전역 변수는 한 번만 초기화하면 됩니다. 스레드의 고유한 특성으로 인해 요청 간에 일부 데이터를 편리하게 공유할 수 있습니다.

PHP 수명주기

PHP 관련 기술 기사를 더 보려면 PHP Tutorial 칼럼을 방문하여 알아보세요!

위 내용은 PHP 수명주기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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