>  기사  >  백엔드 개발  >  PHP의 운영 환경은 무엇입니까?

PHP의 운영 환경은 무엇입니까?

王林
王林원래의
2019-10-10 17:51:543959검색

PHP의 운영 환경은 무엇입니까?

1. nginx + swoole

swoole은 순수 C 언어로 작성된 비동기식 병렬 고성능 네트워크 통신 엔진으로, PHP 언어로 비동기 멀티스레드 서버를 제공합니다. Swoole에는 http/websocket 서버 및 클라이언트인 http2.0 서버가 내장되어 있으며 Go 언어와 유사한 코루틴을 지원하고 동기 코드를 사용하여 1단계 절차를 구현할 수 있습니다.

swoole은 I/O 다중화 및 비동기 차단의 Reactor 모델을 채택하고 다중 스레드 Reactor + 다중 스레드 작업자를 사용하여 비동기 I/O를 구현합니다. Reactor는 Epoll을 기반으로 하며, 각 Reactor는 수많은 연결 요청을 처리할 수 있어 높은 동시성을 쉽게 처리할 수 있습니다.

Nginx+swoole 모드에서 nginx는 프런트엔드 액세스 계층 전달자 역할을 하고 swoole은 동시성이 높은 웹 서비스를 구축하기 위한 애플리케이션 서버 역할을 합니다.

2. nginx + php-fpm

FastCGI는 중립적인 기술 표준이며 php-fpm은 PHP 언어용 FastCGI 프로세스 관리자입니다.

CGI의 포크 및 실행 모드에는 요청이 수신될 때마다 처리를 위해 프로세스가 포크되어야 하며 하나의 요청만 수신하고 하나의 응답만 할 수 있습니다. PHP는 php.ini 파일을 다시 구문 분석해야 합니다. 각 웹 요청에 대해 모든 확장을 다시 로드하고 모든 데이터 구조를 초기화합니다.

FastCGI는 미리 시작되며 php.ini 파일 구문 분석, 확장자 로드 및 데이터 구조 초기화는 시작 시에만 완료됩니다. CGI 관리 서버로 존재하며 프로세스/스레드 풀을 사용하여 사전 시작합니다. 처리해야 할 일련의 하위 프로세스입니다. 그런 다음 웹 서버가 요청을 보냅니다. FastCGI가 요청을 받으면 처리를 위해 하위 프로세스로 전달됩니다. 요청을 받은 후 CGI를 시작할 필요가 없으므로 훨씬 빠릅니다. 웹 서버는 소켓 길이 연결을 통해 FastCGI 프로세스 관리자를 요청합니다.

FastCGI 프로세스는 요청이 도착하면 FastCGI 프로세스 관리자가 PHP-CGI 인터프리터를 선택하고 연결하여 웹 서버에서 보낸 환경 변수와 표준 입력을 수신합니다. 표준 출력 또는 동일한 연결에서 오류가 웹 서버로 반환되고 PHP-CGI 인터프리터 하위 프로세스가 FastCGI 프로세스 관리자의 다음 연결을 처리하기 위해 기다리고 있습니다.

3.apache + mod_php

mod_php 모드는 php를 실행하는데, 이는 php가 apache의 모듈로 시작된다는 의미입니다. Apache가 시작될 때만 php.ini 구성 파일을 읽고 확장 모듈을 로드합니다. Apache가 실행되는 동안에는 확장 모듈을 읽고 로드하지 않습니다. 안정성과 보안상의 이유로 Apache는 일반적으로 기본 프리포크 모드를 사용하여 PHP 프로그램을 실행합니다. 프리포크 모드에서는 별도의 제어 프로세스가 요청을 수신하고 응답하는 데 사용되는 하위 프로세스 생성을 담당합니다.

Apache는 항상 다가오는 요청에 대해 예비 또는 유휴 하위 프로세스를 유지하려고 시도하므로 클라이언트는 서비스를 받기 전에 하위 프로세스가 생성될 때까지 기다릴 필요가 없습니다. 그러나 연결 수가 증가하면 Apache는 요청에 응답하기 위해 더 많은 프로세스를 생성해야 하며, 이로 인해 이벤트와 리소스가 소모되고 동시에 Apache는 I/O 모델을 차단합니다. 이 상황에서 Select는 여러 연결 핸들을 탐색하여 핸들에 이벤트 알림이 있는지 확인하므로 효율성이 매우 낮습니다.

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

위 내용은 PHP의 운영 환경은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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