


Detaillierte Einführung des Multiprozess-Echoservers in die PHPSocket-Programmierung (Bild und Text)
Dieser Artikel bietet Ihnen eine detaillierte Einführung (Bilder und Text) über den Multiprozess-Echo-Server. Ich hoffe, dass er für Sie hilfreich ist.
Das letzte Echo-Dienstprogramm weist einen großen Mangel auf, nämlich dass es nur eine Verbindung zu einem Client gleichzeitig herstellen kann, was offensichtlich unvernünftig ist.
Deshalb verwenden wir dieses Mal einen Multiprozessansatz, um Dienstleistungen für mehrere Kunden gleichzeitig bereitzustellen.
Das Folgende ist der endgültige Effekt:
(Der von uns erstellte Arbeitsprozess kann über den Befehl ps angezeigt werden)
(Öffnen Sie mehrere Terminals über xshell und verbinden Sie mehrere Clients mit dem Serviceprogramm)
Beginnen Sie vorher mit dem Codieren, Lassen Sie uns vorstellen, was ein Prozess ist.
Ein Prozess, also ein laufendes Programm, das Speicher belegt, ist ein unabhängiger Speicherplatz. Wenn wir beispielsweise die Notepad-Software unter Windows öffnen, entspricht dieser Vorgang dem Öffnen eines Prozesses.
Multiprozess bedeutet, mehrere Prozesse zu erstellen, um eine Sache gemeinsam abzuschließen.
Dieses Mal müssen wir nur das serverseitige Programm implementieren, und der Client kann weiterhin das vorherige verwenden. Wenn Sie die vorherigen Artikel nicht gelesen haben, können Sie sich die historischen Artikel ansehen.
In PHP können wir die Funktion pcntl_fork verwenden, um einen Prozess zu erstellen.
Das Folgende ist der Prototyp der Funktion:
int pcntl_fork ( void )
Offizielle Erklärung:
Bei Erfolg wird die PID des generierten untergeordneten Prozesses im Ausführungsthread des übergeordneten Prozesses zurückgegeben Prozess, und die PID des untergeordneten Prozesses wird im Ausführungsthread des untergeordneten Prozesses zurückgegeben. Gibt 0 zurück. Bei einem Fehler wird -1 im übergeordneten Prozesskontext zurückgegeben, der untergeordnete Prozess wird nicht erstellt und ein PHP-Fehler wird ausgelöst.
Warum wird es als Thread bezeichnet, der vom übergeordneten Prozess ausgeführt wird? Weil ein Prozess mindestens einen Thread enthält und dieser Thread der Hauptthread des Prozesses ist.
Wenn der übergeordnete Prozess pcntl_fork aufruft, kopiert er auch einen unabhängigen untergeordneten Prozess. Dieser untergeordnete Prozess hat denselben Kontext wie der übergeordnete Prozess. Mit anderen Worten: Die beiden Prozesse verwenden lediglich denselben Code.
Geben Sie den Codierungsprozess ein:
Durch die Ausführung der Funktion pcntl_fork wird gleichzeitig ein untergeordneter Prozess kopiert Wenn der Kontext die Ausführungsumgebung des übergeordneten Prozesses ist, ist der Rückgabewert die Prozessnummer des untergeordneten Prozesses. Wenn es sich um die Ausführungsumgebung eines untergeordneten Prozesses handelt, wird 0 zurückgegeben. Daher werden in der folgenden Programmstruktur beide Zweige ausgeführt.
Der untergeordnete Prozess verfügt immer noch über die gleiche Logik wie zuvor und wird verwendet, um Nachrichten vom Client zu empfangen und sie gleichzeitig an den Client zu senden.
Die vorletzte Zeile ruft die Funktion pcntl_waitpid auf. Bevor wir diese Funktion erklären, wollen wir zunächst verstehen, was ein Zombie-Prozess ist.
Normalerweise wird der untergeordnete Prozess durch den übergeordneten Prozess erstellt. Da es sich bei Prozessen um unabhängige Speicherstrukturen handelt, kennt der übergeordnete Prozess den Ausführungsstatus des untergeordneten Prozesses nicht. Nachdem der untergeordnete Prozess seine Aufgabe abgeschlossen hat, kann er nicht mehr selbst beendet werden. Zu diesem Zeitpunkt muss der übergeordnete Prozess den Status des untergeordneten Prozesses über das Betriebssystem abrufen, um den untergeordneten Prozess wiederzuverwenden. Andernfalls wird unser untergeordneter Prozess zu einer Müllressource, also einem Zombie-Prozess.
Das Folgende ist der Funktionsprototyp dieser Funktion:
int pcntl_waitpid ( int $pid , int &$status [, int $options = 0 ] )
Offizielle Erklärung:
Warten Sie auf den untergeordneten Prozessstatus von fork oder geben Sie ihn zurück.
Tatsächlich liegt ein Problem mit dem obigen Code vor. Nach dem ersten Aufruf von pcntl_waitpid in foreach ist der Hauptprozess zu diesem Zeitpunkt tatsächlich blockiert und wartet darauf, dass der erste untergeordnete Prozess beendet wird, während andere untergeordnete Prozesse beendet werden Prozesse Wenn es zu diesem Zeitpunkt abnormal beendet wird, wird es vom Hauptprozess nicht recycelt und es wird ein Zombie-Prozess generiert. In der tatsächlichen Entwicklung muss der Hauptprozess noch andere Dinge tun.
Daher wird hier die nicht blockierende Methode empfohlen. Sie ist sehr einfach. Fügen Sie einfach den dritten Parameter hinzu: WNOHANG. Das heißt: pcntl_waitpid ($pid, $status, WNOHANG)
Auf diese Weise kann es sofort zurückkehren, ohne dass der untergeordnete Prozess beendet wird, und somit weiterhin nachfolgenden Code ausführen.
Verwandte Empfehlungen:
Serverseitige PHP-Multiprozess-Programmierpraxis
Serverseitige PHP-Multiprozessprogrammierung practice_PHP-Tutorial
Das obige ist der detaillierte Inhalt vonDetaillierte Einführung des Multiprozess-Echoservers in die PHPSocket-Programmierung (Bild und Text). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



PHP ist eine serverseitige Skriptsprache, die für dynamische Webentwicklung und serverseitige Anwendungen verwendet wird. 1.PHP ist eine interpretierte Sprache, die keine Zusammenstellung erfordert und für die schnelle Entwicklung geeignet ist. 2. PHP -Code ist in HTML eingebettet, wodurch es einfach ist, Webseiten zu entwickeln. 3. PHP verarbeitet die serverseitige Logik, generiert die HTML-Ausgabe und unterstützt Benutzerinteraktion und Datenverarbeitung. 4. PHP kann mit der Datenbank interagieren, die Einreichung von Prozessformularen und serverseitige Aufgaben ausführen.

PHP hat das Netzwerk in den letzten Jahrzehnten geprägt und wird weiterhin eine wichtige Rolle bei der Webentwicklung spielen. 1) PHP stammt aus dem Jahr 1994 und ist aufgrund seiner Benutzerfreundlichkeit und der nahtlosen Integration in MySQL die erste Wahl für Entwickler. 2) Zu den Kernfunktionen gehört das Generieren dynamischer Inhalte und die Integration in die Datenbank, sodass die Website in Echtzeit aktualisiert und auf personalisierte Weise angezeigt wird. 3) Die breite Anwendung und das Ökosystem von PHP hat seine langfristigen Auswirkungen angetrieben, steht jedoch auch mit Versionsaktualisierungen und Sicherheitsherausforderungen gegenüber. 4) Leistungsverbesserungen in den letzten Jahren, wie die Veröffentlichung von PHP7, ermöglichen es ihm, mit modernen Sprachen zu konkurrieren. 5) In Zukunft muss PHP sich mit neuen Herausforderungen wie Containerisierung und Microservices befassen, aber seine Flexibilität und die aktive Community machen es anpassungsfähig.

VS Code system requirements: Operating system: Windows 10 and above, macOS 10.12 and above, Linux distribution processor: minimum 1.6 GHz, recommended 2.0 GHz and above memory: minimum 512 MB, recommended 4 GB and above storage space: minimum 250 MB, recommended 1 GB and above other requirements: stable network connection, Xorg/Wayland (Linux)

Zu den Kernvorteilen von PHP gehören einfacher Lernen, starke Unterstützung für Webentwicklung, reiche Bibliotheken und Rahmenbedingungen, hohe Leistung und Skalierbarkeit, plattformübergreifende Kompatibilität und Kosteneffizienz. 1) leicht zu erlernen und zu bedienen, geeignet für Anfänger; 2) gute Integration in Webserver und unterstützt mehrere Datenbanken. 3) leistungsstarke Frameworks wie Laravel; 4) hohe Leistung kann durch Optimierung erzielt werden; 5) mehrere Betriebssysteme unterstützen; 6) Open Source, um die Entwicklungskosten zu senken.

Die Gründe für die Installation von VS -Code -Erweiterungen können sein: Netzwerkinstabilität, unzureichende Berechtigungen, Systemkompatibilitätsprobleme, VS -Code -Version ist zu alt, Antiviren -Software oder Firewall -Interferenz. Durch Überprüfen von Netzwerkverbindungen, Berechtigungen, Protokolldateien, Aktualisierungen von VS -Code, Deaktivieren von Sicherheitssoftware und Neustart von Code oder Computern können Sie Probleme schrittweise beheben und beheben.

Docker Process Viewing -Methode: 1. Docker Cli -Befehl: Docker PS; 2. SYSTEMD CLI -Befehl: SystemCTL Status Docker; 3.. Docker Compose CLI Command: Docker-Compose PS; 4. Process Explorer (Windows); 5. /proc -Verzeichnis (Linux).

VS Code ist der vollständige Name Visual Studio Code, der eine kostenlose und open-Source-plattformübergreifende Code-Editor und Entwicklungsumgebung von Microsoft ist. Es unterstützt eine breite Palette von Programmiersprachen und bietet Syntax -Hervorhebung, automatische Codebettel, Code -Snippets und intelligente Eingabeaufforderungen zur Verbesserung der Entwicklungseffizienz. Durch ein reiches Erweiterungs -Ökosystem können Benutzer bestimmte Bedürfnisse und Sprachen wie Debugger, Code -Formatierungs -Tools und Git -Integrationen erweitern. VS -Code enthält auch einen intuitiven Debugger, mit dem Fehler in Ihrem Code schnell gefunden und behoben werden können.

VS Code One-Step/Nächster Schritt Verknüpfungsschlüsselnutzung: Einschritt (rückwärts): Windows/Linux: Strg ←; macOS: CMD ← Nächster Schritt (vorwärts): Windows/Linux: Strg →; macos: cmd →
