CGI, FastCGI, APACHE2HANDLER 및 CLI의 차이점은 무엇인가요? 이 글에서는 PHP의 4가지 일반적인 실행 방법을 주로 소개하고, CGI, FastCGI, APACHE2HANDLER, CLI에 대해 자세히 설명합니다. 그것이 모두에게 도움이 되기를 바랍니다.
SAPI: 서버 애플리케이션 프로그래밍 인터페이스 서버 애플리케이션 프로그래밍 포트입니다. 이는 PHP가 다른 응용 프로그램과 상호 작용하기 위한 인터페이스입니다. PHP 스크립트는 웹 서버를 통해, 명령줄에서 직접 또는 다른 프로그램에 포함되는 등 다양한 방법으로 실행될 수 있습니다. SAPI는 외부 통신을 위한 인터페이스를 제공합니다. 일반적인 SAPI에는 cgi, fast-cgi, cli, Apache 모듈 dll 등이 있습니다.
1. CGI
CGI는 일반 게이트웨이 인터페이스입니다. CGI는 웹 서버에서 웹 페이지와 실행 프로그램을 연결하는 브리지와 같습니다. 서버의 실행 프로그램에 전달되고, 서버의 실행 프로그램의 결과가 HTML 페이지로 반환됩니다. CGI는 크로스 플랫폼이며 거의 모든 운영 체제에서 구현될 수 있습니다.
CGI 방법이 연결 요청(사용자 요청)을 발견하면 먼저 cgi 하위 프로세스를 생성하고 CGI 프로세스를 활성화한 다음 요청을 처리하고 처리 후 하위 프로세스를 종료해야 합니다. 이것이 포크 앤 실행 패턴입니다. 따라서 CGI를 사용하는 서버는 연결 요청만큼 많은 CGI 하위 프로세스를 가지게 됩니다. 하위 프로세스의 반복적인 로드는 CGI 성능이 저하되는 주요 원인입니다. 사용자 요청 수가 매우 많으면 메모리, CPU 시간 등 시스템 리소스를 많이 차지하게 되어 성능이 저하됩니다.
2. FastCGI
fast-cgi는 CGI의 업그레이드 버전입니다. FastCGI는 활성화된 한 항상 실행될 수 있습니다. 한 번 포크를 할 시간입니다. 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를 사용하면 이 모든 작업이 프로세스가 시작될 때 한 번만 발생합니다. 추가적인 이점은 지속적인 데이터베이스 연결이 작동한다는 것입니다.
3. APACHE2HANDLER
PHP는 Apache 모듈입니다. 시스템이 시작된 후 Apache 서버는 요청이 나타나면 즉시 처리에 사용할 여러 프로세스 복사본을 생성합니다. 하위 프로세스 생성으로 인해 지연이 발생하지 않습니다. 이러한 서버 복사본은 HTTP 요청을 처리한 후 즉시 종료되지 않고 다음 요청을 기다리는 동안 컴퓨터에 남아 있습니다. 클라이언트 브라우저 요청에 대한 응답이 더 빠르고 성능도 더 높습니다.
4. CLI
cli는 PHP의 명령줄 실행 모드입니다. 자주 사용하지만 눈치 채지 못할 수도 있습니다. (예: Linux에서는 어떤 확장 프로그램이 있는지 알아보기 위해 "php -m"을 자주 사용합니다.
관련 권장 사항:
php fpm과 fast-CGI의 관계는 무엇입니까? 그리고 또 다른 질문이 있습니다. 즉, PHP는 CGI 모드에서 실행됩니다. CGI 모드에서 실행한다는 뜻인가요?
Windows 및 Linux 환경에서 PHP Apache MySQL 환경 설정을 위한 튜토리얼
위 내용은 PHP의 CGI, FastCGI, APACHE2HANDLER 및 CLI 작동 모드에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!