Der Unterschied zwischen PHP-Prozessen und Threads

(*-*)浩
Freigeben: 2023-02-24 19:46:01
Original
3595 Leute haben es durchsucht

Der Unterschied zwischen PHP-Prozessen und Threads

Prozess: Im engeren Sinne ist ein Prozess eine Instanz eines laufenden Programms. Im weiteren Sinne ist ein Prozess ein Programm mit bestimmten unabhängigen Funktionen eine bestimmte Datenerfassung. Führen Sie die Aktivität einmal aus. (Empfohlenes Lernen: PHP-Programmierung vom Einstieg bis zur Beherrschung)

Es ist die Grundeinheit der dynamischen Ausführung des Betriebssystems. In herkömmlichen Betriebssystemen sind Prozesse sowohl die grundlegende Zuordnungseinheit als auch die grundlegende Ausführungseinheit. (Zusammenfassung in wenigen Worten: aktiv, Entität, laufendes Programm);

Thread: wird als leichter Prozess bezeichnet, der die kleinste Einheit des Programmausführungsablaufs darstellt, und ein Thread ist der Eine Entität ist eine Basiseinheit, die vom System unabhängig geplant und disponiert wird.

Der Thread selbst besitzt grundsätzlich keine Systemressourcen, er besitzt nur einige Ressourcen, die für den Betrieb wesentlich sind (z. B. einen Programmzähler, eine Reihe von Registern und einen Stapel), kann aber mit anderen Threads geteilt werden Zugehörigkeit zum selben Prozess Alle Ressourcen, die dem Prozess gehören (in wenigen Worten zusammengefasst: Leichtgewicht, Entität, Prozess, kleinste Einheit:

0) Prozess Es ist die kleinste Einheit der CPU-Ressourcenzuweisung und Thread ist die kleinste Einheit der CPU-Planung

1) Kurz gesagt, ein Programm hat mindestens einen Prozess und ein Prozess hat mindestens einen Thread.

2) Der Teilungsumfang von Threads ist kleiner als der von Prozessen, wodurch Multithread-Programme eine hohe Parallelität aufweisen.

3) Darüber hinaus verfügt der Prozess während der Ausführung über eine unabhängige Speichereinheit, und mehrere Threads teilen sich den Speicher, wodurch die Laufeffizienz des Programms erheblich verbessert wird.

4) Während der Ausführung gibt es Unterschiede zwischen Threads und Prozessen. Jeder unabhängige Thread verfügt über einen Einstiegspunkt für die Programmausführung, eine sequentielle Ausführungssequenz und einen Ausstiegspunkt für das Programm. Threads können jedoch nicht unabhängig ausgeführt werden und müssen im Anwendungsprogramm vorhanden sein, und das Anwendungsprogramm bietet eine Steuerung für die Ausführung mehrerer Threads.

5) Aus logischer Sicht bedeutet Multithreading, dass in einer Anwendung mehrere Ausführungsteile gleichzeitig ausgeführt werden können. Das Betriebssystem betrachtet mehrere Threads jedoch nicht als mehrere unabhängige Anwendungen zur Implementierung der Prozessplanung und -verwaltung sowie der Ressourcenzuweisung. Dies ist der wichtige Unterschied zwischen Prozessen und Threads.

Verschiedene Parallelitätsmodelle von PHP

Da es zwei Modelle gibt, welches verwendet PHP?

Die Antwort lautet „Ja“, was bedeutet, dass PHP das Multithreading-Modell unterstützt. In Multithreading-Situationen müssen normalerweise die Probleme der Ressourcenfreigabe und -isolation gelöst werden. PHP selbst ist threadsicher. Konkret hängt das Modell davon ab, welches SAPI verwendet wird. Beispielsweise kann in Apache das Multi-Thread-Modell oder das Multi-Prozess-Modell verwendet werden. Und php-fpm verwendet ein Multiprozessmodell.

Der derzeit empfohlene Weg ist die Verwendung des PHP-FPM-Modells, da dieses Modell viele Vorteile für PHP bietet:

1 Die Speicherfreigabe ist einfach Beim Multiprozessmodell können Prozesse durch Beenden leicht Speicher freigeben. Da PHP über viele Erweiterungen verfügt, kann es zu Speicherlecks kommen, wenn Sie nicht vorsichtig sind und das Problem einfach durch Beenden des Prozesses lösen.

2. Bei demselben Problem können Erweiterungen oder PHP zu Segmentierungsfehlern führen. Wenn es sich um ein Einzelprozess-Multithread-Modell handelt, bleibt das gesamte PHP hängen. Dies wirkt sich auf den Dienst aus, selbst wenn ein bestimmter Prozess abstürzt, hat dies keine Auswirkungen auf den gesamten Dienst.

Mehrere Prozesse haben die Vorteile mehrerer Prozesse, und Multithreading hat auch die Vorteile von Multithreading. HHVM wählt beispielsweise das Multithreading-Modell. Der größte Vorteil des Multithreading-Modells ist die Bequemlichkeit des Informationsaustauschs und der Kommunikation, da Zeiger direkt im selben Prozessraum verwendet werden können.

Zum Beispiel verwenden das Opcode-Cache-Tool in PHP, APC, Opcache usw. Shared Memory. In HHVM besteht dann keine Notwendigkeit, Shared Memory zu verwenden Mit gemeinsam genutztem Speicher ist das Speichern komplexer Datenstrukturen aufgrund von Zeigerproblemen unpraktisch. Datenstrukturen in C/C++ können in Multithread-Situationen gemeinsam genutzt werden. Dies ist auch hilfreich für die Verbesserung der Effizienz.

Es gibt auch einen offensichtlichen Modellunterschied zwischen Multi-Processing und Multi-Threading: die Logik bei der Verarbeitung von Anfragen.

Bei Multiprozessen ist es schwierig, die FD-Verbindung prozessübergreifend zu übertragen. Daher verwenden viele Prozesse normalerweise listen () im übergeordneten Prozess und akzeptieren () dann in jedem untergeordneten Prozess, um einen Lastausgleich zu erreichen. Bei einem solchen Modell kann es zu einem Herdenproblem kommen.

Im Multithreading-Modell kann ein unabhängiger Thread verwendet werden, um die Anfrage anzunehmen und sie dann an jeden Arbeitsthread weiterzuleiten.

Das obige ist der detaillierte Inhalt vonDer Unterschied zwischen PHP-Prozessen und Threads. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
php
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage