>백엔드 개발 >PHP7 >PHP7의 라이프사이클은 무엇입니까?

PHP7의 라이프사이클은 무엇입니까?

醉折花枝作酒筹
醉折花枝作酒筹앞으로
2021-05-10 09:19:571862검색

이 글에서는 PHP7의 라이프사이클을 소개합니다. 도움이 필요한 친구들이 모두 참고할 수 있기를 바랍니다.

PHP7의 라이프사이클은 무엇입니까?

PHP 아키텍처

SAPI 소개

정의: 서버 응용 프로그램 프로그래밍 인터페이스 서버 응용 프로그램 프로그래밍 포트입니다. 이는 PHP가 다른 응용 프로그램과 상호 작용하기 위한 인터페이스입니다. PHP 스크립트는 웹 서버를 통해, 명령줄에서 직접 또는 다른 프로그램에 포함되는 등 다양한 방법으로 실행될 수 있습니다. SAPI는 외부 통신을 위한 인터페이스를 제공합니다. 일반적인 SAPI에는 cgi, fast-cgi, cli, Apache 모듈 dll 등이 있습니다.

  • CGI

CGI는 일반 게이트웨이 인터페이스(Common Gateway Interface)입니다. 일반 용어로 말하면 CGI는 웹 서버의 웹 페이지와 실행 프로그램을 연결하는 브리지와 같습니다. 수신된 명령어는 서버의 실행 프로그램으로 전달되고, 서버의 실행 프로그램의 결과는 HTML 페이지로 반환됩니다. CGI는 크로스 플랫폼이며 거의 모든 운영 체제에서 구현될 수 있습니다.遇 CGI 방법은 연결 요청(사용자 요청)이 발생할 때 먼저 CGI 하위 프로세스를 생성하고 CGI 프로세스를 활성화한 다음 처리 후 이 하위 프로세스를 종료하도록 요청을 처리해야 합니다. 이것이 포크 앤 실행 패턴입니다. 따라서 CGI를 사용하는 서버는 연결 요청만큼 많은 CGI 하위 프로세스를 가지게 됩니다. 하위 프로세스의 반복적인 로드는 CGI 성능이 저하되는 주요 원인입니다. 사용자 요청 수가 매우 많으면 메모리, CPU 시간 등 시스템 리소스를 많이 차지하게 되어 성능이 저하됩니다.

    FPM(FastCGI)
  • FastCGI는 CGI의 업그레이드 버전입니다. 활성화된 동안에는 항상 실행되지 않습니다. 매번 포크하는 데 시간이 걸립니다. PHP는 관리를 위해 PHP FastCGI Process Manager의 전체 이름인 PHP-FPM(FastCGI Process Manager)을 사용합니다.

          웹 서버가 시작되면 FastCGI 프로세스 관리자(IIS ISAPI 또는 Apache 모듈)를 로드합니다. FastCGI 프로세스 관리자는 자체적으로 초기화되고 여러 CGI 인터프리터 프로세스(여러 php-cgi 표시)를 시작한 다음 웹 서버의 연결을 기다립니다.

클라이언트 요청이 웹 서버에 도달하면 FastCGI 프로세스 관리자가 CGI 인터프리터를 선택하고 연결합니다. 웹 서버는 CGI 환경 변수와 표준 입력을 FastCGI 하위 프로세스 php-cgi로 보냅니다.

FastCGI 하위 프로세스는 처리를 완료한 후 동일한 연결에서 표준 출력 및 오류 정보를 웹 서버로 반환합니다. FastCGI 하위 프로세스가 연결을 닫으면 요청이 처리됩니다. 그런 다음 FastCGI 하위 프로세스는 FastCGI 프로세스 관리자(웹 서버에서 실행)의 다음 연결을 기다리고 처리합니다. CGI 모드에서는 이 시점에서 php-cgi가 종료됩니다.

위의 경우 CGI가 일반적으로 얼마나 느린지 상상할 수 있습니다. PHP에 대한 모든 웹 요청은 php.ini를 다시 구문 분석하고, 모든 확장을 다시 로드하고, 모든 데이터 구조를 다시 초기화해야 합니다. FastCGI를 사용하면 이 모든 작업이 프로세스가 시작될 때 한 번만 발생합니다. 추가적인 이점은 지속적인 데이터베이스 연결이 작동한다는 것입니다.

    APACHE2HANDLER
  • PHP는 시스템이 시작된 후 Apache 서버가 메모리에 상주할 여러 프로세스 복사본을 미리 생성하며, 이러한 예비 하위 프로세스는 즉시 처리에 사용됩니다. 하위 프로세스 생성으로 인해 지연이 발생하지 않습니다. 이러한 서버 복사본은 HTTP 요청을 처리한 후 즉시 종료되지 않고 다음 요청을 기다리는 동안 컴퓨터에 남아 있습니다. 클라이언트 브라우저 요청에 대한 응답이 더 빠르고 성능도 더 높습니다.

    CLI
  • CLI는 PHP의 명령줄 실행 모드입니다. 자주 사용하지만 눈치 채지 못할 수도 있습니다. 예를 들어 Linux에서는 어떤 확장 프로그램이 있는지 확인하기 위해 "php -m"을 자주 사용합니다. 설치됨 PHP 명령줄 실행 모드입니다.

SAPI process

구조:

struct _sapi_module_struct { 
      char *name; 
      char *pretty_name;
      int (*startup)(struct _sapi_module_struct *sapi_module); 
      int (*shutdown)(struct _sapi_module_struct *sapi_module); 
      int (*activate)(void); 
      int (*deactivate)(void); 
      size_t (*ub_write)(const char *str, size_t str_length); 
      void (*flush)(void *server_context); 
     …
}

호출 API:

모듈 시작 시 호출:

int (*startup)(struct _sapi_module_struct *sapi_module);

모듈 종료 시 호출:

int (*shutdown)(struct _sapi_module_struct *sapi_module);

요청 처리 시 호출 :

int (*activate)(void);

전체 요청 호출 처리 중:

int (*activate)(void);

SAPI

CGI 모드에 해당하는 구조:

CLI 수명 주기:

FPM 모드 대응 SAPI

구조:

FPM 모드의 수명주기:

추천 학습 : php 비디오 튜토리얼

위 내용은 PHP7의 라이프사이클은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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