Prozessmanagement – Verhindern Sie, dass der Prozess zu einem Zombie-Prozess wird
Wie verwalten Sie die untergeordneten Prozesse, nachdem der Prozess erstellt wurde?
Bei der Verwendung von Signalen zur Verwaltung untergeordneter Prozesse gibt es im Allgemeinen zwei Situationen: (Empfohlenes Lernen: PHP-Programmierung vom Einstieg bis zur Beherrschung)
posix_kill() : Diese Funktion funktioniert nicht, wie der Name vermuten lässt. Sie sendet ein Signal an den untergeordneten Prozess. Bei Bedarf können Sie ein Prozessbeendigungssignal an den untergeordneten Prozess senden
pcntl_waitpid(): Warten Sie auf den untergeordneten Prozessstatus von fork oder geben Sie ihn zurück. Wenn der angegebene untergeordnete Prozess beim Aufruf dieser Funktion beendet wurde (allgemein als Zombie-Prozess bekannt), kehrt diese Funktion sofort zurück und alle Systemressourcen des untergeordneten Prozesses freigeben. Der Prozess kann verhindern, dass der untergeordnete Prozess zu einem Zombie-Prozess wird, was zu einer Verschwendung von Systemressourcen führt. Der übergeordnete Prozess hängt up, und der untergeordnete Prozess wird vom init-Prozess mit pid=1 (wait/waitpid) übernommen, bis der eigene Lebenszyklus des untergeordneten Prozesses endet und die Ressourcen vom System recycelt werden und der übergeordnete Prozess relevante Recyclingvorgänge ausführt
Zombie-Prozess: Der untergeordnete Prozess wird beendet und der übergeordnete Prozess erhält den untergeordneten Prozess nicht über den Wait/Waitpid-Status, die vom untergeordneten Prozess belegte Prozessnummer und andere Ressourcenbeschreibungen sind noch vorhanden, was zu Schäden führt: Beispielsweise ist die Prozessnummer begrenzt und die Prozessnummer kann nicht freigegeben werden, was dazu führt, dass in Zukunft keine Prozessnummer mehr verfügbar ist
**Wird im übergeordneten Prozess verwendet: pcntl_wait Oder der Zweck von pcntl_waitpid besteht darin, Arbeiter zu verhindern davon ab, zu Zombie-Prozessen zu werdenFunktion: Nach der Verwendung von pcntl_wait() wird nach dem Tod des untergeordneten Prozesses auch der übergeordnete Prozess gestoppt**
Schließlich übergeben wir das Bild unten. Lassen Sie uns kurz zusammenfassen und beschreiben Der Prozess dieser Multiprozessimplementierung:
Prozessmanagement-Interprozesskommunikation
Warteschlange: z. B. Redis, empfohlen Socket: empfohlen
Pipe: Die Implementierung ist komplex, die Pipe (Pipe) liegt in Form einer Datei vor und es gibt einen Engpass bei der Festplatten-E/A-Leistung
Signal: Trägt eine kleine Informationsmenge, schwer zu verwalten
Prozessverwaltung – Wechsel zum Daemon-ProzessVerwenden und implementieren Sie PHP-Deadloop. php &
Das obige ist der detaillierte Inhalt vonWie PHP Prozesse verwaltet. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!