Heim  >  Artikel  >  Backend-Entwicklung  >  Ist PHP Multiprozess?

Ist PHP Multiprozess?

(*-*)浩
(*-*)浩Original
2019-09-29 10:20:122485Durchsuche

Beim Ausführen von Skripten auf dem Server lassen sich einige zeitaufwändige Aufgaben nicht vermeiden und die Verwendung mehrerer Prozesse ist unerlässlich. Nach PHP5.5 begann PHP, Multiprozesselemente hinzuzufügen, um den Entwicklungsanforderungen gerecht zu werden.

Ist PHP Multiprozess?

Hinweis:

Erweiterungen, die aktiviert werden müssen, um Multi-Processing zu implementieren: pcntl, posix. (Empfohlenes Lernen: PHP-Video-Tutorial)

Die Multiprozessprogrammierung von PHP wird in der Windows-Umgebung nicht unterstützt. Dieser Artikel wurde hauptsächlich in der Linux-Umgebung entwickelt und getestet 🎜>

Ein einfaches Strukturdiagramm

Ist PHP Multiprozess?

Hauptfunktionen

pcntl_fork: Mehrere Prozesse erstellen, Nach dem Aufruf werden zwei Elemente zurückgegeben. Die PID des Prozesses, 0 ist der untergeordnete Prozess, größer als 0 ist der übergeordnete Prozess (der übergeordnete Prozess erhält die ID des untergeordneten Prozesses, ist also größer als 0), -1 bedeutet Erstellung fehlgeschlagen

$pid = $pcntlInstall ? pcntl_fork() : 0;if ($pid == -1) {
    //fork失败
 } elseif ($pid > 0) {
    //父进程
    ......
 } elseif ($pid == 0) {
    //子进程
    ......
 }

pcntl_signal: Registrieren Sie eine Signalverarbeitungs-Rückruffunktion. Sie können das gesendete Signal erfassen, wenn der untergeordnete Prozess endet

/配合pcntl_signal使用
declare (ticks = 1);

//当子进程退出时,会触发该函数,当前子进程数-1
pcntl_signal(SIGCHLD, function ($signo) {
    switch ($signo) {
        case SIGCHLD:
            echo $curChildPro . 'SIGCHLD', PHP_EOL;
            $curChildPro--;
            break;
    }
});

pcntl_wait: Wird verwendet, um den übergeordneten Prozess anzuhalten und auf den untergeordneten Prozess zu warten zum Beenden

Das obige ist der detaillierte Inhalt vonIst PHP Multiprozess?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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