Heim  >  Artikel  >  Backend-Entwicklung  >  phppcntl-Nutzung

phppcntl-Nutzung

藏色散人
藏色散人Original
2021-03-30 09:49:123647Durchsuche

Verwendung von php pcntl: Erstellen Sie zunächst eine PHP-Beispieldatei. Verwenden Sie dann die PCNTL-Funktionsreihe, um eine Transaktion zu verarbeiten. Verwenden Sie schließlich ein „$pids“-Array, damit der Hauptprozess auf den Abschluss aller Prozesse warten kann, bevor er beendet wird.

phppcntl-Nutzung

Die Betriebsumgebung dieses Artikels: Windows 7-System, PHP-Version 7.1, DELL G3-Computer

Beispiele für die PCNTL-Mehrprozessnutzung von PHP

In diesem Artikel wird hauptsächlich die PCNTL-Mehrprozessnutzung von PHP vorgestellt Die Beispiele werden analysiert. Die Fähigkeiten zur Verwendung von pcntl zum Betreiben von Multiprozessen sind von großem praktischem Wert. Freunde, die es benötigen, können darauf zurückgreifen.

Dieser Artikel beschreibt die Verwendung von pcntl-Multiprozessen in PHP. Teilen Sie es als Referenz mit allen. Die spezifische Analyse lautet wie folgt:

PHP kann mithilfe der PCNTL-Funktionsreihe auch eine Transaktion mit mehreren Prozessen verarbeiten. Ich muss beispielsweise 800.000 Daten aus der Datenbank abrufen und dann eine Reihe von Folgeverarbeitungen durchführen. Sollte ich zu diesem Zeitpunkt einen einzelnen Prozess verwenden? Sie können bis heute nächstes Jahr warten. Daher sollten Sie die Funktion pcntl verwenden.

Angenommen, ich möchte 20 Prozesse starten und die 1-80-W-Daten in 20 Teile aufteilen. Der Hauptprozess wartet, bis alle Unterprozesse beendet sind, bevor er beendet wird:

$max = 800000;
$workers = 20;
$pids = array();
for($i = 0; $i < $workers; $i++){
  $pids[$i] = pcntl_fork();
  switch ($pids[$i]) {
    case -1:
      echo "fork error : {$i} \r\n";
      exit;
    case 0:
      $param = array(
        &#39;lastid&#39; => $max / $workers * $i,
        &#39;maxid&#39; => $max / $workers * ($i+1),
      );
      $this->executeWorker($input, $output, $param);
      exit;
    default:
      break;
  }
}
foreach ($pids as $i => $pid) {
  if($pid) {
    pcntl_waitpid($pid, $status);
  }
}

Wenn pcntl_fork herauskommt, wird ein PID-Wert zurückgegeben. Diese PID ist im untergeordneten Prozess 0 und im übergeordneten Prozess die PID des untergeordneten Prozesses (>0). Wenn die PID -1 ist, bedeutet dies, dass die Verzweigung fehlgeschlagen ist.

Verwenden Sie ein $pids-Array, um den Hauptprozess warten zu lassen, bis alle Prozesse abgeschlossen sind, bevor er beendet wird

[Lernempfehlung: PHP-Video-Tutorial]

Das obige ist der detaillierte Inhalt vonphppcntl-Nutzung. 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