Was PHP-Ingenieure normalerweise am häufigsten verwenden, ist PHP-FMP zur Planung von PHP-Prozessen. Die Verwendung von PHP ist nicht auf das Web beschränkt, es kann auch für die Programmierung von Systemtools, die Überwachung oder den Betrieb und die Wartung verwendet werden. Lassen Sie uns als Nächstes darüber sprechen, wie Sie die PHP-Multiprozessprogrammierung implementieren.
Starten Sie zunächst einen Hauptprozess, der zum Lesen von Konfigurationsinformationen verwendet wird.
Zum Beispiel habe ich gelesen, dass ich 5 Indikatoren überwachen muss. Als nächstes startet der Hauptprozess fünf Unterprozesse, um jeweils diese fünf Indikatoren zu überwachen.
Vereinfachte Operation: Ein Hauptprozess erstellt 5 Unterprozesse
Um einen Prozess zu erstellen, müssen Sie pcntl_fork() verwenden, eine Funktion von PHP. Einige Leute sind möglicherweise nicht mit dieser Funktion vertraut , aber sie wurden Linux ausgesetzt. Jeder, der C geworden ist, weiß, dass es in Linux eine Funktion namens fork() gibt, die zum Erstellen untergeordneter Prozesse verwendet wird.
Es ist zu beachten, dass diese Funktion nur unter Linux genutzt werden kann und die Erweiterung pcntl installiert werden muss.
In der offiziellen Dokumentation heißt es:
Die Funktion pcntl_fork() erstellt einen untergeordneten Prozess. Dieser untergeordnete Prozess unterscheidet sich von seinem übergeordneten Prozess nur in der PID (Prozessnummer) und PPID (übergeordnete Prozessnummer). . Einzelheiten zur Funktionsweise von Fork auf Ihrem System finden Sie im Fork(2)-Handbuch Ihres Systems.
Bei Erfolg wird die PID des generierten untergeordneten Prozesses im Ausführungsthread des übergeordneten Prozesses und 0 im Ausführungsthread des untergeordneten Prozesses zurückgegeben. Bei einem Fehler wird -1 im übergeordneten Prozesskontext zurückgegeben, der untergeordnete Prozess wird nicht erstellt und ein PHP-Fehler wird ausgelöst.
Auf diese Weise kann ein untergeordneter Prozess erstellt werden. Nachdem der untergeordnete Prozess erfolgreich erstellt wurde, wird die Methode nach pcntl_fork() ausgeführt.