이 기사는 PHP 수명주기에 대한 자세한 설명(그림)을 제공합니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.
첫 번째 프로세스는 모듈 초기화 단계(MINIT)입니다. 이 프로세스는 전체 SAPI 수명 주기(예: Apache 시작 후 전체 수명 주기 또는 명령줄 프로그램의 전체 실행 프로세스) 동안 한 번만 수행됩니다. ). 두 번째 프로세스는 요청 단계에서 발생하는 모듈 활성화 단계(RINIT)입니다. 예를 들어 URL을 통해 페이지를 요청하면 각 요청(RINIT 요청 시작) 전에 모듈 활성화가 수행됩니다. 요청이 도착하면 PHP PHP 실행 중 변수 이름과 값 내용을 저장하는 심볼 테이블과 현재 모든 함수, 클래스 및 기타 정보가 포함된 심볼 테이블을 포함한 실행 환경 생성 등 스크립트 실행을 위한 기본 환경을 초기화합니다. . 그런 다음 PHP는 모든 모듈의 RINIT 함수를 호출합니다. 이 단계에서 각 모듈은 일부 관련 작업도 수행할 수 있습니다. 일반적으로 PHP는 스크립트가 끝까지 실행되거나 종료() 또는 die( ) 기능. 시작 단계에 해당하여 종료 단계도 두 단계로 나누어집니다. 하나는 요청이 완료된 후 모듈을 비활성화하는 단계(RSHUTDOWN, RINIT에 해당)이고, 다른 하나는 SAPI 수명 주기가 종료되면 모듈을 닫는 단계입니다( 웹 서버가 종료되거나 명령줄 스크립트가 실행되고 종료됩니다. (MSHUTDOWN, MINIT에 해당)
Startup
각 모듈의 모듈 초기화 호출 그 전에 다음을 포함하는 초기화 프로세스가 있습니다.
여기서의 초기화 작업에는 메모리 관리 초기화, 전역적으로 사용되는 함수 포인터 초기화(예: 앞에서 언급한 zend_printf 등), 어휘 분석, PHP 소스 파일의 구문 분석, 중간 코드 실행을 위한 함수 포인터 할당, 여러 HashTable 초기화(예: 함수 테이블, 상수 테이블 등), ini 파일 구문 분석 준비, PHP 소스 파일 구문 분석 준비, 내장 함수 등록(예: strlen, 정의 등), 표준 상수(예: E_ALL, TRUE, NULL 등) 등록, GLOBALS 전역 변수 등록 등
여기서의 환경 초기화는 사용자 공간에서 사용해야 하는 일부 환경 변수의 초기화를 의미합니다. 여기서의 환경에는 서버 환경, 요청 데이터 환경 등이 포함됩니다. 우리가 사용하는 실제 변수는 # 🎜🎜#입니다. P# 🎜# # 🎜🎜##🎜 🎜# 🎜🎜 #OST, #🎜 🎜## 🎜🎜#_GET、# 🎜 🎜## 🎜🎜#C#🎜 🎜# 🎜🎜 ## 🎜# # 🎜🎜#OOKIE , #🎜 🎜#_SERVER, #🎜 🎜 ## 🎜 🎜## 🎜 🎜# E# 🎜🎜 ## 🎜 🎜#NV、#🎜 🎜## 🎜🎜#_FILES. 모듈 요청 초기화실행 #🎜 🎜#DEACTIVATIONPHP가 요청을 닫는 프로세스는 php_request_shutdown 함수에 존재하는 여러 닫는 작업의 모음입니다. 이 컬렉션에는 다음이 포함됩니다: register_shutdown_function()을 통해 등록된 모든 함수를 호출합니다. 종료 시 호출되는 이러한 기능은 사용자 공간에 추가되었습니다. 간단한 예로, 스크립트 오류가 발생할 때 통합 함수를 호출하여 사용자에게 보다 친숙한 페이지를 제공할 수 있습니다. 이는 웹의 404 페이지와 다소 유사합니다. 마침내 마무리할 시간입니다. sapi_flush는 CLI 모드의 fflush 기능과 동일한 sapi_module.flush를 호출합니다. Zend 엔진을 종료합니다. zend_shutdown은 Zend 엔진을 종료합니다 .
사용 가능한 모든 __destruct 함수를 실행합니다. 여기서 소멸자는 객체 풀(EG(objects_store))에 있는 모든 객체의 소멸자와 EG(symbol_table)에 있는 각 요소의 소멸자 메서드를 포함합니다.
모든 출력을 플러시합니다. 이 역시 HTTP 응답 헤더를 보내는 과정입니다. 문자열을 출력하지만 이 문자열은 특정 사양을 준수할 수 있습니다.
각 모듈의 종료 요청 메서드를 탐색하고 모듈의 요청 종료 작업을 수행합니다. 이는 각 확장의 RSHUTDOWN 변수를 호출하는 것입니다.
zend_deactivate 함수를 통해 어휘 분석기, 구문 분석기 및 중간 코드 실행기를 끕니다.
각 확장의 사후 RSHUTDOWN 함수를 호출합니다.
SAPI를 닫습니다.
스트림 래퍼를 닫고 스트림 필터를 닫습니다.
최대 실행 시간을 재설정합니다.
End
위 내용은 PHP 라이프사이클에 대한 자세한 설명(그림)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!