>백엔드 개발 >PHP 튜토리얼 >php_php를 실행하는 4가지 일반적인 방법 팁

php_php를 실행하는 4가지 일반적인 방법 팁

WBOY
WBOY원래의
2016-05-16 20:20:051194검색

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

1.CGI

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

CGI 메서드는 연결 요청(사용자 요청)을 발견하면 먼저 cgi 하위 프로세스를 생성하고 CGI 프로세스를 활성화한 다음 요청을 처리하고 처리 후 하위 프로세스를 종료해야 합니다. 이것이 포크 앤 실행 패턴입니다. 따라서 CGI를 사용하는 서버는 연결 요청만큼 많은 CGI 하위 프로세스를 가지게 됩니다. 하위 프로세스의 반복적인 로드는 CGI 성능이 저하되는 주요 원인입니다. 사용자 요청 수가 매우 많으면 메모리, CPU 시간 등 시스템 리소스를 많이 차지하게 되어 성능이 저하됩니다.

2.빠른CGI

fast-cgi는 cgi의 업그레이드 버전입니다. 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를 사용하면 이 모든 작업이 프로세스가 시작될 때 한 번만 발생합니다. 추가적인 이점은 지속적인 데이터베이스 연결이 작동한다는 것입니다.

3. 아파치2핸들러
PHP는 Apache 모듈입니다. Apache 서버는 시스템을 시작한 후 메모리에 상주할 여러 프로세스 복사본을 미리 생성합니다. 요청이 나타나면 이러한 예비 하위 프로세스가 즉시 처리에 사용됩니다. 하위 프로세스를 생성할 필요가 없어 지연이 발생했습니다. 이러한 서버 복사본은 HTTP 요청을 처리한 후 즉시 종료되지 않고 다음 요청을 기다리는 동안 컴퓨터에 남아 있습니다. 클라이언트 브라우저 요청에 대한 응답이 더 빠르고 성능도 더 높습니다.

4. CLI

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

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