Heim >Backend-Entwicklung >PHP-Tutorial >PHP-SAPI-Schnittstelle

PHP-SAPI-Schnittstelle

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOriginal
2016-08-08 09:32:321188Durchsuche
Im Allgemeinen ist der gesamte Workflow von FastCGI wie folgt:
  • Laden Sie den FastCGI-Prozessmanager (IIS ISAPI oder Apache-Modul), wenn der Webserver startet.
  • FastCGI-Prozess Der Manager initialisiert sich selbst, startet mehrere CGI-Interpreterprozesse (sichtbar mehrere PHP-CGI) und wartet auf Verbindungen vom Webserver.
  • Wenn eine Client-Anfrage den Webserver erreicht, wählt der FastCGI-Prozessmanager einen CGI-Interpreter aus und stellt eine Verbindung zu ihm her. Der Webserver sendet CGI-Umgebungsvariablen und Standardeingaben an den FastCGI-Unterprozess php-cgi.
  • Nachdem der FastCGI-Unterprozess die Verarbeitung abgeschlossen hat, gibt er über dieselbe Verbindung Standardausgabe- und Fehlerinformationen an den Webserver zurück. Wenn der untergeordnete FastCGI-Prozess die Verbindung schließt, wird die Anfrage verarbeitet. Der untergeordnete FastCGI-Prozess wartet dann auf die nächste Verbindung vom FastCGI-Prozessmanager (der auf dem Webserver ausgeführt wird) und verarbeitet diese. Im CGI-Modus wird php-cgi an dieser Stelle beendet.
  • PHPs CGI implementiert das Fastcgi-Protokoll. Es handelt sich um einen TCP- oder UDP-Protokollserver, der beim Start einen Socket-Listener für den TCP/UDP-Protokollserver erstellt erhält entsprechende Anfragen zur Bearbeitung. Anschließend wird der Lebenszyklus von PHP eingegeben: Modulinitialisierung, Sapi-Initialisierung, Verarbeitung von PHP-Anforderungen, Schließen von Modulen, Sapi-Schließen usw. bilden den gesamten CGI-Lebenszyklus.
    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
    };

    
                    
                    
                    

    Das Obige hat die PHP-SAPI-Schnittstelle und einige Aspekte davon vorgestellt. Ich hoffe, dass es für Freunde hilfreich sein wird, die sich für PHP-Tutorials interessieren.

    Stellungnahme:
    Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn