Heim  >  Artikel  >  Backend-Entwicklung  >  Was sind die Betriebsumgebungen für PHP?

Was sind die Betriebsumgebungen für PHP?

王林
王林Original
2019-10-10 17:51:543959Durchsuche

Was sind die Betriebsumgebungen für PHP?

1. Nginx + Swoole

Swoole ist eine asynchrone, parallele, leistungsstarke Netzwerkkommunikations-Engine, die in reiner C-Sprache geschrieben ist Ein asynchroner Multithread-Server in PHP-Sprache. Swoole verfügt über einen integrierten http/websocket-Server und -Client sowie einen http2.0-Server, unterstützt Coroutinen ähnlich der Go-Sprache und kann synchronen Code verwenden, um einstufige Verfahren zu implementieren.

swoole übernimmt das Reactor-Modell des E/A-Multiplexings und der asynchronen Blockierung und verwendet Multithread-Reaktor + Multithread-Worker, um asynchrone E/A zu implementieren. Reactor basiert auf Epoll und jeder Reactor kann unzählige Verbindungsanfragen verarbeiten, sodass er problemlos mit hoher Parallelität umgehen kann.

Im Nginx+swoole-Modus dient Nginx als Forwarder der Front-End-Zugriffsschicht und Swoole als Anwendungsserver zum Aufbau von Webdiensten mit hoher Parallelität.

2. nginx + php-fpm

FastCGI ist ein neutraler technischer Standard und php-fpm ist der FastCGI-Prozessmanager für die PHP-Sprache.

Der Fork-and-Execute-Modus von CGI weist viele Mängel auf. Jedes Mal, wenn eine Anfrage empfangen wird, muss ein Prozess zur Verarbeitung geforkt werden, und PHP muss PHP erneut analysieren Laden Sie für jede Webanfrage alle Erweiterungen neu und initialisieren Sie alle Datenstrukturen.

FastCGI wird im Voraus gestartet, das Parsen der php.ini-Datei, das Laden von Erweiterungen und die Initialisierung der Datenstruktur werden erst beim Start abgeschlossen. Es existiert als CGI-Verwaltungsserver und verwendet dazu einen Prozess/Thread-Pool Starten Sie vorab eine Reihe von Der untergeordnete Prozess wartet auf die Verarbeitung. Dann sendet der Webserver eine Anfrage. Sobald FastCGI die Anfrage erhält, wird sie zur Verarbeitung an den untergeordneten Prozess übergeben. Nach dem Empfang der Anfrage muss CGI nicht gestartet werden, was viel schneller geht. Der Webserver fordert den FastCGI-Prozessmanager über eine Socket-lange Verbindung an.

Der FastCGI-Prozess ist wie ein residenter CGI. Wenn eine Anfrage eintrifft, wählt der FastCGI-Prozessmanager einen PHP-CGI-Interpreter aus, um die vom Webserver gesendeten Umgebungsvariablen und Standardeingaben zu empfangen verarbeitet, gibt Standardausgabe oder Fehler von derselben Verbindung wie der PHP-CGI-Interpreter-Unterprozess an den Webserver zurück und wartet darauf, die nächste Verbindung vom FastCGI-Prozessmanager zu verarbeiten.

3. Apache + mod_php

Das Ausführen von PHP im Mod_php-Modus bedeutet, dass PHP als Modul von Apache gestartet wird. Nur wenn Apache startet, wird die Konfigurationsdatei php.ini gelesen und das Erweiterungsmodul geladen. Erweiterungsmodule werden nicht gelesen und geladen, während Apache ausgeführt wird. Aus Stabilitäts- und Sicherheitsgründen verwendet Apache normalerweise den Standard-Prefork-Modus, um PHP-Programme auszuführen. Im Prefork-Modus ist ein separater Steuerungsprozess dafür verantwortlich, untergeordnete Prozesse zu erzeugen, die zum Abhören von Anfragen und Antworten verwendet werden.

Apache versucht immer, einige freie oder inaktive untergeordnete Prozesse für anstehende Anforderungen bereitzuhalten, sodass der Client nicht auf die Generierung des untergeordneten Prozesses warten muss, bevor er den Dienst erhält. Sobald jedoch die Anzahl der Verbindungen zunimmt, muss Apache mehr Prozesse generieren, um auf Anfragen zu reagieren. Die CPU wechselt die Prozesse häufig, was dazu führt, dass die Leistung von Apache abnimmt und gleichzeitig die E/A blockiert In dieser Situation durchläuft select mehrere Verbindungshandles, um festzustellen, ob das Handle über Ereignisbenachrichtigungen verfügt, sodass die Effizienz sehr gering ist.

Empfohlenes Tutorial: PHP-Video-Tutorial

Das obige ist der detaillierte Inhalt vonWas sind die Betriebsumgebungen für 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
Vorheriger Artikel:Was sind die Merkmale von PHP?Nächster Artikel:Was sind die Merkmale von PHP?