>  기사  >  백엔드 개발  >  PHP 요청의 시작과 끝: MINIT 및 RINIT, RSHUTDOWN 및 MSHUTDOWN

PHP 요청의 시작과 끝: MINIT 및 RINIT, RSHUTDOWN 및 MSHUTDOWN

伊谢尔伦
伊谢尔伦원래의
2016-11-21 16:36:012508검색

PHP 실행이 시작된 후 두 가지 주요 단계를 거칩니다.

요청 처리 전 시작 단계

요청 후 종료 단계

두 가지 단계가 있습니다. 시작 단계의 프로세스:

첫 번째 프로세스는 모듈 초기화 단계(MINIT)입니다. 이 프로세스는 전체 SAPI 수명 주기(예: Apache 시작 후 전체 수명 주기 또는 전체 수명 주기) 동안 한 번만 수행됩니다. 명령줄 프로그램의 실행 프로세스) .

두 번째 프로세스는 요청 단계에서 발생하는 모듈 활성화 단계(RINIT)입니다. 예를 들어 URL을 통해 페이지를 요청하면 각 요청 전에 모듈 활성화(RINIT 요청 시작)가 수행됩니다. . 예를 들어, PHP가 일부 확장 모듈을 등록하면 MINIT 단계에서 모든 모듈의 MINIT 함수가 호출됩니다. 모듈은 이 단계에서 상수 등록, 모듈에서 사용하는 클래스 정의 등과 같은 일부 초기화 작업을 수행할 수 있습니다.

모듈은 구현 시 다음 매크로를 통해 이러한 콜백 함수를 구현할 수 있습니다.

PHP_MINIT_FUNCTION(myphpextension)
{
    // 注册常量或者类等初始化操作
    return SUCCESS; 
}

요청이 도착한 후 PHP는 실행 환경 생성 등 스크립트 실행을 위한 기본 환경을 초기화합니다. , PHP 실행 저장을 포함하여 프로세스의 변수 이름과 값 내용이 포함된 기호 테이블과 현재 모든 함수, 클래스 및 기타 정보가 포함된 기호 테이블입니다. 그런 다음 PHP는 모든 모듈의 RINIT 함수를 호출합니다. 이 단계에서 각 모듈은 일부 관련 작업을 수행할 수도 있습니다. 모듈의 RINIT 함수는 MINIT 콜백 함수와 유사합니다.

PHP_RINIT_FUNCTION(myphpextension)
{
    // 例如记录请求开始时间
    // 随后在请求结束的时候记录结束时间。这样我们就能够记录下处理请求所花费的时间了
    return SUCCESS; 
}

요청 후. 처리되면 종료 단계에 들어갑니다. 일반적으로 스크립트가 끝까지 실행되거나 exit() 또는 die() 함수를 호출하면 PHP는 종료 단계에 들어갑니다. 시작 단계에 해당하여 종료 단계도 두 단계로 나누어집니다. 하나는 요청이 완료된 후 모듈을 비활성화하는 단계(RSHUTDOWN, RINIT에 해당)이고, 다른 하나는 SAPI 수명 주기가 종료되면 모듈을 닫는 단계입니다( 웹 서버가 종료되거나 명령줄 스크립트가 실행되고 종료됩니다(MINIT에 해당하는 MSHUTDOWN).

PHP_RSHUTDOWN_FUNCTION(myphpextension)
{
    // 例如记录请求结束时间,并把相应的信息写入到日至文件中。
    return SUCCESS; 
}


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