>  기사  >  백엔드 개발  >  PHP SAPI 인터페이스

PHP SAPI 인터페이스

WBOY
WBOY원래의
2016-08-08 09:32:321105검색
일반적으로 FastCGI의 전체 작업 흐름은 다음과 같습니다.
  • 웹 서버가 시작될 때 FastCGI 프로세스 관리자(IIS ISAPI 또는 Apache 모듈) 로드
  • FastCGI 프로세스 관리자는 자신을 초기화하고 여러 CGI 인터프리터 프로세스(여러 php-cgi 표시)를 시작하고 웹 서버의 연결을 기다립니다.
  • 클라이언트 요청이 웹 서버에 도달하면 FastCGI 프로세스 관리자가 CGI 인터프리터를 선택하고 연결합니다. 웹 서버는 CGI 환경 변수와 표준 입력을 FastCGI 하위 프로세스 php-cgi로 보냅니다.
  • FastCGI 하위 프로세스는 처리를 완료한 후 동일한 연결에서 표준 출력 및 오류 정보를 웹 서버로 반환합니다. FastCGI 하위 프로세스가 연결을 닫으면 요청이 처리됩니다. 그런 다음 FastCGI 하위 프로세스는 FastCGI 프로세스 관리자(웹 서버에서 실행)의 다음 연결을 기다리고 처리합니다. CGI 모드에서는 이 시점에서 php-cgi가 종료됩니다.
  • PHP의 CGI는 Fastcgi 프로토콜을 구현합니다. 이는 웹 서버의 요청을 받아들이는 TCP 또는 UDP 프로토콜 서버로, 시작 시 TCP/UDP 프로토콜 서버에 대한 소켓 리스너를 생성합니다. 처리를 위해 관련 요청을 받습니다. 그런 다음 PHP의 라이프사이클이 시작됩니다. 모듈 초기화, sapi 초기화, PHP 요청 처리, 모듈 닫기, sapi 닫기 등이 전체 CGI 라이프사이클을 구성합니다.
    static sapi_module_struct cgi_sapi_module = {
    	"cgi-fcgi",						/* name */
    	"CGI/FastCGI",					/* pretty name */
    
    	php_cgi_startup,				/* startup */
    	php_module_shutdown_wrapper,	/* shutdown */
    
    	sapi_cgi_activate,				/* activate */
    	sapi_cgi_deactivate,			/* deactivate */
    
    	sapi_cgi_ub_write,				/* unbuffered write */
    	sapi_cgi_flush,					/* flush */
    	NULL,							/* get uid */
    	sapi_cgi_getenv,				/* getenv */
    
    	php_error,						/* error handler */
    
    	NULL,							/* header handler */
    	sapi_cgi_send_headers,			/* send headers handler */
    	NULL,							/* send header handler */
    
    	sapi_cgi_read_post,				/* read POST data */
    	sapi_cgi_read_cookies,			/* read Cookies */
    
    	sapi_cgi_register_variables,	/* register server variables */
    	sapi_cgi_log_message,			/* Log message */
    	NULL,							/* Get request time */
    	NULL,							/* Child terminate */
    
    	STANDARD_SAPI_MODULE_PROPERTIES
    };

    
                    
                    
                    

    위 내용은 PHP SAPI 인터페이스를 소개했으며, PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

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