Heim > Artikel > Backend-Entwicklung > Ist PHP ein Einzelprozess oder ein Mehrprozess?
Das Schreiben eines PHP-Multiprozessprogramms ist in wenigen Schritten so einfach, als würde man einen Elefanten in den Kühlschrank stellen.
PHP implementiert Multiprozesse in drei einfachen Schritten: Unterprozesse erstellen, Unterprozesse verwalten und Unterprozesse verarbeiten. Es klingt einfach, erfordert aber viel Wissen. Sie müssen beispielsweise wissen, dass jeder Prozess eine Prozessnummer (PID) hat, und Sie müssen auch wissen, wie die Befehlszeile PHP-Dateien ausführt. (Empfohlenes Lernen: PHP-Video-Tutorial)
PHP-Multiprozess erfordert Unterstützung für PCNTL- und Posix-Erweiterungen, die über php -m angezeigt werden können.
Im ersten Schritt zum Erstellen eines untergeordneten Prozesses wird die Funktion pcntl_fork() verwendet. Der Rückgabewert der Funktion ist normalerweise 0 und bei einem Fehler wird -1 zurückgegeben. Lassen Sie mich zunächst ein intuitives Beispiel für die Erstellung eines Unterprozesses geben:
$ppid = posix_getpid(); $pid = pcntl_fork(); if ($pid == -1) { throw new Exception('fork子进程失败!'); } elseif ($pid > 0) { cli_set_process_title("我是父进程,我的进程id是{$ppid}."); sleep(30); // 保持30秒,确保能被ps查到 } else { $cpid = posix_getpid(); cli_set_process_title("我是{$ppid}的子进程,我的进程id是{$cpid}."); sleep(30); }
Der zweite Schritt der Verwaltung von Unterprozessen verwendet Signale. Vereinfacht ausgedrückt verwendet der übergeordnete Prozess zwei Funktionen pcntl_signal() und pcntl_signal_dispatch, die für die Installation von Signalprozessoren und die Arbeitsverteilung an den untergeordneten Prozess verantwortlich sind. Dieser Schritt wird zunächst kurz vorgestellt, da er das Konzept einer Rückruffunktion beinhaltet, und ich werde in Zukunft umfassendere Inhalte hinzufügen.
Der dritte Schritt der Verarbeitung des untergeordneten Prozesses erfordert ebenfalls zwei Funktionen. Eine davon ist die Funktion posix_kill(), die ein Beendigungssignal sendet, und die andere ist die Funktion pcntl_waitpid(), die auf den Status des untergeordneten Prozesses wartet, damit der Zweck, die Aufgabe zusammen mit dem untergeordneten Prozess abzuschließen, erreicht werden kann.
Viele Dinge, von denen Sie denken, dass sie kompliziert sind, sind im Grunde genommen sehr klare Schritte, die viel Wissen erfordern, aber nicht viele Funktionen. Wenn Sie also anfangen, beißen Sie einfach in den sauren Apfel, lernen Sie es und glauben Sie, dass Sie es eines Tages klar verstehen werden.
Das obige ist der detaillierte Inhalt vonIst PHP ein Einzelprozess oder ein Mehrprozess?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!