PHP 작동 모드에 대해 알아보세요.

藏色散人
풀어 주다: 2023-04-09 18:34:01
앞으로
3201명이 탐색했습니다.

추천: "PHP 비디오 튜토리얼"

PHP에는 5가지 작동 모드가 있고 4가지 공통 모드가 있습니다:

1.CGI(Common Gateway Interface)
2.FastCGI(Resident) CGI / Long-Live CGI)
3.CLI(Command Line Run/Command Line Interface)
4.LoadModule [Apache 전용]
5. ISAPI(Internet Server Application Program Interface) [IIS 전용]

Remarks: PHP5.3 이후에는 PHP 없음 더 이상 ISAPI 모드가 있으며 설치 후 php5isapi.dll 파일이 더 이상 존재하지 않습니다. IIS6에서 더 높은 버전의 PHP를 사용하려면 FastCGI 확장을 설치한 다음 IIS6에서 FastCGI를 지원하도록 설정해야 합니다.

현재 실행 중인 모드 보기
echo php_sapi_name();

CGI 모드

소개:

CGI는 일반 게이트웨이 인터페이스(Common Gateway Interface)입니다. CGI는 웹 페이지와 웹 서버의 실행 프로그램을 연결하는 브릿지와 같습니다. HTML에서 받은 명령을 서버의 실행 프로그램에 전달하고, 서버 실행 프로그램의 결과를 HTML 페이지로 반환합니다. CGI는 크로스 플랫폼이며 거의 모든 운영 체제에서 구현될 수 있습니다.

호출 프로세스: Fork-And-Execute 모드

사용자 요청 —> 웹 서버가 요청(일반적으로 사용되는 Nginx, apache)을 수신합니다 —> CGI 하위 프로세스를 포크하고 요청을 처리합니다 —-> 요청 처리되어 반환됩니다. 결과는 웹 서버로 이동하여 하위 프로세스를 파괴합니다. -> 웹 서버는 결과를 사용자에게 반환합니다. , 각 요청은 독립적으로 처리되며 호출 프로세스는 충분히 간단합니다. 명확하고 제어 가능합니다.

프로세스는 데이터가 오염되지 않도록 격리되어 있습니다.

단점:
PHP 작동 모드에 대해 알아보세요.
모든 요청은 새로운 CGI 하위 프로세스를 포크해야 합니다. . 동시에 1,000개의 동시 요청이 있는 경우 1,000개의 하위 프로세스를 포크해야 하며 이로 인해 여러 가지 문제가 발생할 수 있습니다.

하위 프로세스를 포크하는 데는 시간이 걸리고 메모리를 차지합니다. 쓰기]


하위 프로세스가 너무 많으면 CPU가 컨텍스트 전환에 많은 시간을 소비하게 됩니다

각 요청에는 관련 리소스를 다시 로드해야 합니다

FastCGI 모드

  1. 소개:
  2. FastCGI는 업그레이드된 버전입니다. FastCGI는 수명이 긴 CGI와 같습니다. 웹 서버를 시작할 때 FastCGI 프로세스 관리자(PHP-FPM, IIS ISAPI, Apache 모듈)를 로드하면 웹 서버만 넘겨주면 됩니다. 처리를 위한 FastCGI 프로세스 관리자입니다.
호출 프로세스: PHP-FPM을 예로 들어보세요

웹 서버가 시작되면 PHP-FPM 마스터 프로세스(주로 처리를 위해 유휴 자체 하위 프로세스에 요청을 할당하는 역할을 담당함)와 특정 수의 fast-cgi 하위 프로세스(요청 처리 담당) PHP-FPM 마스터 프로세스는 프로세스 풀을 관리합니다. 풀에는 여러 개의 fast-cgi 하위 프로세스가 있으며, 각 fast-cgi 하위 프로세스는 서로 간섭하지 않고 독립적으로 요청을 처리합니다.

사용자 요청 -> 웹 서버가 요청을 수신합니다. 요청을 처리하기 위한 cgi 하위 프로세스 —> Sub 프로세스가 파일(예: php.ini) 및 기타 리소스 처리 요청을 로드합니다. —> 처리가 종료되고 리소스가 지워지고 결과가 마스터로 반환되며 하위 프로세스가 정지되고 유휴 상태로 표시됩니다. > 마스터는 결과를 웹 서버에 반환 —> 웹 서버 결과를 사용자에게 반환

그림:


장점:

안정성 관점에서 FastCGI는 독립적인 프로세스 풀에서 CGI를 실행합니다. . 단일 프로세스가 종료되면 시스템을 쉽게 삭제할 수 있습니다. 그런 다음 새 프로세스를 다시 할당하여 로직을 실행하세요.

보안 관점에서 FastCGI는 호스트 웹 서버와 완전히 독립적입니다. 웹 서버 [PHP-FPM이 닫히면 502 잘못된 게이트웨이가 사용자에게 반환됩니다.]
성능 관점에서 FastCGI는 동적 로직 처리를 웹 서버와 분리합니다. 호스트 서버가 IO에 집중할 수 있도록 합니다. [일반적인 동적 웹 페이지의 경우 논리적 처리의 일부만 있을 수 있으며 사진과 같은 정적 리소스의 로딩은 더 많습니다.]PHP 작동 모드에 대해 알아보세요.
단점:

    빠른 cgi 하위 프로세스는 한 번에 하나의 요청만 처리할 수 있으므로 웹 사이트의 동시 성능은 하위 프로세스 수에 따라 제한됩니다.
    너무 많은 프로세스가 열리면 CPU가 많은 시간을 낭비하게 됩니다. 프로세스 컨텍스트 스위칭.
    fast-cgi 하위 프로세스가 요청될 때마다 관련 리소스를 다시 로드해야 하며 요청이 완료되면 리소스를 해제해야 합니다.

    CLI(Command Line Run/Command Line Interface)

    소개 :

    php-cli 모드는 명령줄 모드에 속하며, 이제 막 PHP를 배우기 시작하고 wamp와 wnmp를 시작한 많은 개발자들에게 가장 생소한 운영 모드입니다.
    이 모드는 다른 프로그램의 사용이 필요하지 않고 직접 들어갈 수 있습니다. PHP 코드를 실행하는 php xx.php
    명령줄 모드 일반 웹 모드와 확실히 다른 점은 다음과 같습니다.
    시간 초과 없음
    버퍼 버퍼링은 기본적으로 꺼져 있습니다.
    STDIN 및 STDOUT 표준 입력/출력/오류 사용
    echo var_dump, phpinfo 및 기타 출력은 콘솔에 직접 출력됩니다.
    사용 가능한 클래스/함수 다양한
    php.ini 구성이 다릅니다

    PS: 자세한 내용은 공식 문서를 참조하세요: www.php.net/manual/zh/features.com...

    LoadModule(Apache 전용)

    소개:
    모듈 모드는 mod_php5 모듈 형태로 통합되었습니다. 이때 mod_php5 모듈의 기능은 Apache가 전달한 PHP 파일 요청을 받아 처리하는 것입니다. , 처리된 결과를 Apache에 반환합니다.
    Apache 구성 파일 httpd.conf에서 일반적으로 추가되는 LoadModule php7_module "D:/…/php71/php7apache2_4.dll"은 다음

    호출 프로세스의 역할을 합니다.

    사용자 요청—> ; 요청을 처리하기 위해 mod_php5 모듈을 호출 —> 요청 결과를 Apache에 반환 —> Apache는 결과를 사용자에게 반환

    그림:
    PHP 작동 모드에 대해 알아보세요.

    ISAPI(인터넷 서버 응용 프로그램 인터페이스)

    소개 :

    PHP5.3 이후에는 PHP에 더 이상 ISAPI 모드가 없으며 설치 후 php5isapi.dll 파일도 더 이상 없습니다. IIS6에서 더 높은 버전의 PHP를 사용하려면 FastCGI 확장을 설치한 다음 IIS6에서 FastCGI를 지원하도록 설정해야 합니다. 그러니 여기서는 자세한 내용을 소개하지 않겠습니다

    일러스트:
    PHP 작동 모드에 대해 알아보세요.

    Written at end:

    오늘날 인터넷이 폭발적으로 발전하면서 대부분의 웹사이트는 웹사이트의 높은 동시성 성능을 고려해야 합니다. Nginx는 가볍고 뛰어난 동시성 성능으로 인해 개발자들의 선호도가 높아지고 있습니다. 한때 전체 네트워크에서 인기가 있었던 LAMP 조합은 더 이상 PHP 개발자에게 첫 번째 선택이 아닙니다. 갑자기 등장한 LNMP 조합은 PHPer의 필수 과정이 되었으며 이로 인해 Apache 기반 LoadModule 모델이 점점 더 언급되지 않게 되었습니다.
    또한 명령줄 스크립트를 작성하는 데 사용되는 CLI 모드와 거의 멸종된 ISAPI 모드는 분명히 웹 사이트 구축에 적합하지 않습니다.
    CGI의 향상된 버전인 Fast-CGI 모드는 CGI의 단순성과 보안성을 계승하고 PHP-FPM을 사용하여 하위 프로세스를 관리하므로 웹 서버가 I/O 처리에 더 집중할 수 있습니다. PHP-FPM은 프로세스를 관리하고 유지합니다. 요청 처리를 기다리기 위해 미리 특정 개수의 하위 프로세스를 Fork할 수 있는 풀입니다. 요청이 올 때 하위 프로세스를 Fork할 필요가 없고 요청이 끝날 때 하위 프로세스를 삭제할 필요도 없습니다.

위 내용은 PHP 작동 모드에 대해 알아보세요.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
php
원천:learnku.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!