>백엔드 개발 >PHP 튜토리얼 >PHP의 여러 운영 모드 - CSDN 블로그

PHP의 여러 운영 모드 - CSDN 블로그

不言
不言원래의
2018-04-08 13:47:114224검색

우리는 워커맨 프로그램이 명령줄 모드인 php-cli 모드에서 실행되어야 한다는 것을 알고 있습니다.

PHP에는 현재 CGI, FastCGI, CLI 및 웹 모듈 모드라는 4가지 작동 모드가 있습니다.

CGI

전체 이름은 "공통 게이트웨이 인터페이스"입니다. 클라이언트가 웹 브라우저에서 웹 서버에서 실행되는 프로그램에 데이터를 요청할 수 있도록 하는 클라이언트와 프로그램 간의 관계를 설명합니다. 또한 CGI는 모든 언어에 독립적이므로 해당 언어에 표준 입력, 출력 및 환경 변수가 있는 한 어떤 언어로든 작성할 수 있습니다. php, perl, tcl 등이 있습니다.

CGI는 각 사용자 요청마다 유지 관리를 위해 별도의 하위 프로세스를 열어야 하므로 그 수가 많으면 성능 문제가 발생하며 최근에는 거의 사용되지 않습니다.

FastCGI

CGI의 업그레이드 버전인 FastCGI는 활성화된 한 항상 실행될 수 있으며 매번 php.ini를 구문 분석하고 다시 시작하는 데 시간이 걸리지 않습니다. . 모든 dll 확장을 로드하고 모든 데이터 구조를 다시 초기화합니다.

PHP는 관리를 위해 PHP FastCGI Process Manager의 전체 이름인 PHP-FPM(FastCGI Process Manager)을 사용합니다.

FastCGI 작동 원리

  • FastCGI 프로세스 관리자는 웹 서버가 시작될 때 로드됩니다.

  • FastCGI 프로세스 관리자는 자체적으로 초기화되고 여러 CGI 인터프리터 프로세스를 시작하며 웹 서버로부터의 연결을 기다립니다.

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

  • FastCGI 하위 프로세스는 처리를 완료한 후 동일한 연결에서 표준 출력 및 오류 정보를 웹 서버로 반환합니다. FastCGI 하위 프로세스가 연결을 닫으면 요청이 처리됩니다. 그런 다음 FastCGI 하위 프로세스는 FastCGI 프로세스 관리자의 다음 연결을 기다리고 처리합니다.

  • 일반 CGI 모드에서는 이게 끝이고 다음에 다시 시작해야 합니다. 그러나 FastCGI에서는 이 모든 것이 프로세스가 시작될 때 한 번만 발생합니다. 추가 보너스는 지속적인 데이터베이스 연결이 작동한다는 것입니다.

Cli

PHP-CLI는 PHP Command Line Interface의 약어로, PHP가 명령줄에서 실행하기 위한 인터페이스로, PHP 환경(PHP-CGI 등)에서 실행되는 것과는 다릅니다. 웹 서버.

Linux에서는 PHP가 어떤 확장 프로그램을 설치했는지 확인하기 위해 "php -m"을 자주 사용합니다. 이는 PHP 명령줄 실행 모드입니다. php -h를 입력하여 특정 명령이 무엇인지 확인할 수 있습니다.

php-cli 모드에서는 워커맨처럼 php 파일을 직접 시작하고 실행할 수 있습니다

php index.php start

php-cli 모드에서는 PHP 실행 시간 초과가 없다는 점에 유의해야 합니다.

Module loading

은 일반적으로 Apache용입니다. 이런 방식으로 그들의 공통 본질은 LoadModule을 사용하여 phpX_module을 로드하는 것입니다. 이는 php를 Apache의 하위 모듈로 실행하는 것입니다. 웹을 통해 PHP 파일에 액세스할 때 Apache는 phpX_module을 호출하여 PHP 코드를 구문 분석합니다. 그렇다면 phpX_module은 PHP 코드를 구문 분석하기 위해 데이터를 어떻게 PHP 파서에 전달합니까? 대답은 sapi를 통해서입니다.

그래서 Apache가 PHP를 호출하는 위의 프로세스는 다음과 같습니다.

apache -> httpd -> php5_module -> sapi -> php

Apache가 요청을 받을 때마다 PHP에 연결하여 sapi를 통해 요청을 완료하는 프로세스를 생성합니다. 사용자가 너무 많으면 서버가 감당할 수 없습니다.

또한 mod_php를 apache로 컴파일할 때 문제가 발생했을 때 php의 문제인지 apache의 문제인지 판단하기 어렵습니다.

요약

고성능 PHP WEB 서버를 구축하고 싶다면 현재 가장 좋은 방법은 Apache/Nginx + FastCGI + PHP-FPM(+PHP-CGI)입니다. 더 이상 모듈 로딩이나 CGI를 사용하지 마세요

관련 권장 사항:

4가지 PHP 작동 모드에 대한 자세한 설명

5가지 주요 PHP 작동 모드

위 내용은 PHP의 여러 운영 모드 - CSDN 블로그의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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