목차
PHP 아키텍처
SAPI 소개
CGI
구조:
CGI 모드에 해당하는 구조:
FPM 모드 대응 SAPI
백엔드 개발 PHP7 PHP7의 라이프사이클은 무엇입니까?

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

May 10, 2021 am 09:19 AM
php7 수명주기

이 글에서는 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. 크로스 플레이가 있습니까?
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

vue3은 여러 수명주기 기능을 변경했습니다. vue3은 여러 수명주기 기능을 변경했습니다. Jan 13, 2023 pm 05:57 PM

vue3은 4개의 수명주기 기능을 변경했습니다. Vue3 결합 API는 beforeCreated 및 Created Hook 함수를 취소하고 대신 Step Hook을 사용하므로 이 기능은 사용할 수 없습니다. Vue3의 컴포넌트 파괴를 위한 후크 함수가 destroy 및 beforeDestroy에서 beforeUnmount 및 unmounted로 변경되었습니다.

C++ 함수 포인터의 소멸 및 수명주기 관리를 처리하는 방법은 무엇입니까? C++ 함수 포인터의 소멸 및 수명주기 관리를 처리하는 방법은 무엇입니까? Apr 17, 2024 pm 05:48 PM

C++에서 함수 포인터에는 적절한 소멸과 수명 주기 관리가 필요합니다. 이는 함수 포인터를 수동으로 소멸시키고 메모리를 해제함으로써 달성할 수 있습니다. std::unique_ptr 또는 std::shared_ptr과 같은 스마트 포인터를 사용하여 함수 포인터의 수명 주기를 자동으로 관리합니다. 함수 포인터를 객체에 바인딩하면 객체 수명 주기가 함수 포인터의 소멸을 관리합니다. GUI 프로그래밍에서 스마트 포인터를 사용하거나 객체에 바인딩하면 콜백 함수가 적절한 시간에 소멸되어 메모리 누수 및 불일치를 방지할 수 있습니다.

서블릿의 생명주기는 여러 단계로 나누어진다 서블릿의 생명주기는 여러 단계로 나누어진다 Feb 23, 2023 pm 01:46 PM

서블릿 생명주기는 서블릿의 생성부터 소멸까지의 전체 과정을 말하며, 3가지 단계로 나눌 수 있습니다. 1. 초기화 단계, init() 메소드를 호출하여 서블릿을 초기화합니다. 2. 실행 단계(요청 처리) 컨테이너는 HTTP 요청을 나타내는 ServletRequest 객체와 HTTP 응답을 나타내는 ServletResponse 객체를 생성하도록 요청한 다음 이를 Servlet의 service() 메소드에 매개변수로 전달합니다. 3. 파괴 단계.

php7.0에 mongo 확장을 설치하는 방법 php7.0에 mongo 확장을 설치하는 방법 Nov 21, 2022 am 10:25 AM

php7.0에서 mongo 확장을 설치하는 방법: 1. mongodb 사용자 그룹 및 사용자를 생성합니다. 2. mongodb 소스 코드 패키지를 다운로드하고 소스 코드 패키지를 "/usr/local/src/" 디렉터리에 넣습니다. "src/" 디렉터리를 입력합니다. 4. 소스 코드 패키지의 압축을 풉니다. 5. mongodb 파일 디렉터리를 생성합니다. 6. "mongodb/" 디렉터리에 파일을 복사합니다. 7. mongodb 구성 파일을 생성하고 구성을 수정합니다.

Vue3의 라이프사이클 기능: Vue3의 라이프사이클을 빠르게 마스터하세요 Vue3의 라이프사이클 기능: Vue3의 라이프사이클을 빠르게 마스터하세요 Jun 18, 2023 am 08:20 AM

Vue3은 현재 프런트엔드 세계에서 가장 인기 있는 프레임워크 중 하나이며, Vue3의 라이프사이클 기능은 Vue3의 매우 중요한 부분입니다. Vue3의 라이프사이클 기능을 사용하면 특정 시간에 특정 이벤트를 트리거하여 구성 요소의 제어 가능성을 높일 수 있습니다. 이 글에서는 독자가 Vue3의 라이프사이클 기능을 빠르게 익힐 수 있도록 Vue3의 라이프사이클 기능의 기본 개념, 각 라이프사이클 기능의 역할과 사용법, 구현 사례를 자세히 살펴보고 설명합니다. 1. Vue3의 생명주기 기능

uniapp에서 구성요소의 라이프사이클 후크 기능을 수동으로 트리거하는 방법 uniapp에서 구성요소의 라이프사이클 후크 기능을 수동으로 트리거하는 방법 Oct 21, 2023 am 11:04 AM

Uniapp은 iOS, Android 및 웹 애플리케이션을 동시에 구축할 수 있는 크로스 플랫폼 애플리케이션 개발 프레임워크입니다. 애플리케이션 개발 과정에서 컴포넌트 라이프사이클 후크 기능은 특정 시간 노드에서 해당 작업을 수행하는 데 사용되는 매우 중요한 부분입니다. 일반적으로 페이지 로딩 완료, 뷰 진입, 뷰에서 컴포넌트 제거 등 특정 이벤트가 발생하면 컴포넌트의 라이프사이클 기능이 자동으로 실행됩니다. 그러나 때로는 특정 목표를 달성하기 위해 구성 요소의 수명 주기 후크 기능을 수동으로 트리거해야 하는 경우도 있습니다.

php7에서 tcp 포트가 작동하지 않는 것을 감지했을 때 문제를 해결하는 방법 php7에서 tcp 포트가 작동하지 않는 것을 감지했을 때 문제를 해결하는 방법 Mar 22, 2023 am 09:30 AM

php5에서는 fsockopen() 함수를 사용하여 TCP 포트를 감지할 수 있습니다. 이 기능은 네트워크 연결을 열고 일부 네트워크 통신을 수행하는 데 사용할 수 있습니다. 그러나 php7에서는 fsockopen() 함수에 포트를 열 수 없거나 서버에 연결할 수 없는 등의 몇 가지 문제가 발생할 수 있습니다. 이 문제를 해결하기 위해, 우리는 소켓_create() 함수와 소켓_연결() 함수를 사용하여 TCP 포트를 감지할 수 있습니다.

php7.0에 플러그인이 설치되어 있는데 여전히 설치되지 않은 것으로 표시되면 어떻게 해야 합니까? php7.0에 플러그인이 설치되어 있는데 여전히 설치되지 않은 것으로 표시되면 어떻게 해야 합니까? Apr 02, 2024 pm 07:39 PM

PHP 7.0에서 설치된 플러그인이 표시되지 않는 문제를 해결하려면: 플러그인 구성을 확인하고 플러그인을 활성화하세요. 구성 변경 사항을 적용하려면 PHP를 다시 시작하세요. 플러그인 파일 권한이 올바른지 확인하세요. 플러그인이 올바르게 작동하도록 하려면 누락된 종속성을 설치하세요. 다른 모든 단계가 실패하면 PHP를 다시 빌드하세요. 다른 가능한 원인으로는 호환되지 않는 플러그인 버전, 잘못된 버전 로드 또는 PHP 구성 문제 등이 있습니다.

See all articles