Heim  >  Artikel  >  Backend-Entwicklung  >  Ausführliche Erklärung der 4 gängigen Ausführungsmethoden von PHP

Ausführliche Erklärung der 4 gängigen Ausführungsmethoden von PHP

墨辰丷
墨辰丷Original
2018-05-29 11:09:524601Durchsuche

In diesem Artikel werden hauptsächlich die vier gängigen Betriebsmethoden von PHP, CGI, FastCGI, APACHE2HANDLER und CLI vorgestellt, die einen gewissen Referenzwert haben. Interessierte Freunde können sich auf

Die vier häufig verwendeten PHP-Betriebsmethoden beziehen: CGI, FastCGI, APACHE2HANDLER, CLI.

1. CGI ist eine gängige Gateway-Schnittstelle. Für Laien ist CGI wie eine Brücke Seite an das Ausführungsprogramm im WEB-Server weiter. Es leitet die von HTML empfangenen Anweisungen an das Ausführungsprogramm des Servers weiter und gibt dann die Ergebnisse des Ausführungsprogramms des Servers an die HTML-Seite zurück. CGI ist äußerst plattformübergreifend und kann auf fast jedem Betriebssystem implementiert werden.
Wenn die CGI-Methode auf eine Verbindungsanforderung (Benutzeranforderung) stößt, muss sie zunächst einen CGI-Unterprozess erstellen, einen CGI-Prozess aktivieren, dann die Anforderung verarbeiten und den Unterprozess nach der Verarbeitung beenden. Dies ist das Fork-and-Execute-Muster. Daher verfügt ein Server, der CGI verwendet, über so viele CGI-Unterprozesse wie Verbindungsanforderungen. Das wiederholte Laden von Unterprozessen ist der Hauptgrund für die geringe CGI-Leistung. Wenn die Anzahl der Benutzeranforderungen sehr groß ist, werden große Mengen an Systemressourcen wie Speicher, CPU-Zeit usw. belegt, was zu einer geringen Leistung führt.

2. FastCGI

Fast-CGI ist wie ein langlebiges CGI Solange es aktiviert ist, dauert es nicht jedes Mal, bis es gegabelt ist. PHP verwendet für die Verwaltung PHP-FPM (FastCGI Process Manager), der vollständige Name von PHP FastCGI Process Manager.
Laden Sie den FastCGI-Prozessmanager (IIS ISAPI oder Apache-Modul), wenn der Webserver startet. Der FastCGI-Prozessmanager 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.


Im obigen Fall können Sie sich vorstellen, wie langsam CGI normalerweise ist. Jede Webanfrage an PHP muss php.ini erneut analysieren, alle Erweiterungen neu laden und alle Datenstrukturen neu initialisieren. Bei FastCGI geschieht dies alles nur einmal, nämlich beim Start des Prozesses. Ein zusätzlicher Vorteil besteht darin, dass dauerhafte Datenbankverbindungen funktionieren.


3. APACHE2HANDLER

PHP ist ein Apache-Modul. Nach dem Systemstart generiert der Apache-Server vorab mehrere Prozesskopien, die im Speicher abgelegt werden Diese inaktiven Unterprozesse werden sofort verarbeitet, sodass keine Verzögerung durch das Laichen von Unterprozessen entsteht. Diese Serverkopien werden nicht sofort nach der Verarbeitung einer HTTP-Anfrage beendet, sondern bleiben auf dem Computer und warten auf die nächste Anfrage. Die Reaktion auf Client-Browseranfragen ist schneller und die Leistung ist höher.


4. CLI

CLI ist der Befehlszeilen-Ausführungsmodus von PHP. Die Ausführungsbefehle auf der CLI-Seite sind manchmal sehr nützlich Zusammenfassung:

PHP-Versionsinformationen anzeigen

eric:~ youngeric$ php -v

PHP 5.5.38 (cli) (built: Oct 1 2016 23:03:00) 
Copyright (c) 1997-2015 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2015 Zend Technologies

Anzeigen die aktuelle PHP-Erweiterung

eric:~ youngeric$ php -m

[PHP Modules]
bcmath
bz2
calendar
Core
ctype
curl
date
......

php.ini-Konfigurationsinformationen anzeigen (entspricht der Verwendung der Funktion phpinfo()). )

eric:~ youngeric$ php -ini

phpinfo()
PHP Version => 5.5.38

System => Darwin eric.local 16.1.0 Darwin Kernel Version 16.1.0: Wed Oct 19 20:31:56 PDT 2016; root:xnu-3789.21.4~4/RELEASE_X86_64 x86_64
Build Date => Oct 1 2016 23:01:51
Configure Command => './configure' '--prefix=/usr/local/Cellar/php55/5.5.38_11' '--localstatedir=/usr/local/var' '--sysconfdir=/usr/local/etc/php/5.5' '--with-config-file-path=/usr/local/etc/php/5.5' '--with-config-file-scan-dir=/usr/local/etc/php/5.5/conf.d' '--mandir=/usr/local/Cellar/php55/5.5.38_11/share/man' '--enable-bcmath' '--enable-calendar' '--enable-dba' '--enable-exif' '--enable-ftp' '--enable-gd-native-ttf' '--enable-mbregex' '--enable-mbstring' '--enable-shmop' '--enable-soap' '--enable-sockets' '--enable-sysvmsg' '--enable-sysvsem' '--enable-sysvshm' '--enable-wddx' '--enable-zip' '--with-freetype-dir=/usr/local/opt/freetype' '--with-gd' '--with-gettext=/usr/local/opt/gettext' '--with-iconv-dir=/usr' '--with-icu-dir=/usr/local/opt/icu4c' '--with-jpeg-dir=/usr/local/opt/jpeg' '--with-kerberos=/usr' '--with-libedit' '--with-mhash' '--with-ndbm=/usr' '--with-png-dir=/usr/local/opt/libpng' '--with-xmlrpc' '--with-zlib=/usr' '--with-readline=/usr/local/opt/readline' '--without-gmp' '--without-snmp' '--with-libxml-dir=/usr/local/opt/libxml2' '--with-pdo-odbc=unixODBC,/usr/local/opt/unixodbc' '--with-unixODBC=/usr/local/opt/unixodbc' '--with-bz2=/usr' '--with-openssl=/usr/local/opt/openssl' '--enable-fpm' '--with-fpm-user=_www' '--with-fpm-group=_www' '--with-curl' '--with-xsl=/usr' '--with-ldap' '--with-ldap-sasl=/usr' '--with-mysql-sock=/tmp/mysql.sock' '--with-mysqli=mysqlnd' '--with-mysql=mysqlnd' '--with-pdo-mysql=mysqlnd' '--disable-opcache' '--enable-pcntl' '--without-pear' '--enable-dtrace' '--disable-phpdbg' '--enable-zend-signals'
Server API => Command Line Interface
Virtual Directory Support => disabled
Configuration File (php.ini) Path => /usr/local/etc/php/5.5
Loaded Configuration File => /usr/local/etc/php/5.5/php.ini
Scan this dir for additional .ini files => /usr/local/etc/php/5.5/conf.d
......

Funktionsinformationen anzeigen

eric:~ youngeric$ php --rf date

Function [ <internal:date> function date ] {
 - Parameters [2] {
  Parameter #0 [ <required> $format ]
  Parameter #1 [ <optional> $timestamp ]
 }
}

Kursinformationen anzeigen

eric:~ youngeric$ php --rc pdo

Class [ <internal:PDO> class PDO ] {

 - Constants [89] {
  Constant [ integer PARAM_BOOL ] { 5 }
  Constant [ integer PARAM_NULL ] { 0 }
  Constant [ integer PARAM_INT ] { 1 }
  Constant [ integer PARAM_STR ] { 2 }
  Constant [ integer PARAM_LOB ] { 3 }
  Constant [ integer PARAM_STMT ] { 4 }
  Constant [ integer PARAM_INPUT_OUTPUT ] { 2147483648 }
 ......

PHP-Code erkennen

eric:~ youngeric$ php -l jiance.php

PHP Parse error: syntax error, unexpected end of file, expecting &#39;,&#39; or &#39;;&#39; in jiance.php on line 3
Errors parsing jiance.php

Als beste Sprache der Welt verfügt PHP sogar über integrierte Serverfunktionen (sind Sie schockiert?) .

eric:Desktop youngeric$ php -S 127.0.0.1:8080

PHP 5.5.38 Development Server started at Thu Dec 22 09:44:20 2016
Listening on http://127.0.0.1:8080
Document root is /Users/youngeric/Desktop
Press Ctrl-C to quit.
[Thu Dec 22 09:44:29 2016] 127.0.0.1:52988 [404]: / - No such file or directory
[Thu Dec 22 09:44:29 2016] 127.0.0.1:52989 [404]: /favicon.ico - No such file or directory

Das Obige ist der gesamte Inhalt dieses Artikels, ich hoffe, dass er für das Studium aller hilfreich sein wird.

Verwandte Empfehlungen:


PHP

Ordner kopieren, löschen, Größenanzeige usw. basierend auf Iteration


PHP

Wie kann ein mehrdimensionaler Array-Sortieralgorithmus implementiert werden?


PHP

rekursive Implementierung Kopieren, Löschen, Anzeigen der Größe usw. von Ordnern


Das obige ist der detaillierte Inhalt vonAusführliche Erklärung der 4 gängigen Ausführungsmethoden von PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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