Heim > Backend-Entwicklung > PHP-Tutorial > Beispiel für die Verwendung von PHP pcntl in mehreren Prozessen

Beispiel für die Verwendung von PHP pcntl in mehreren Prozessen

高洛峰
Freigeben: 2023-03-04 06:32:01
Original
1287 Leute haben es durchsucht

Das Beispiel in diesem Artikel beschreibt die Verwendung des pcntl-Multiprozesses von 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 nachfolgender Verarbeitungen durchführen. Verwenden Sie zu diesem Zeitpunkt einen einzigen Prozess? Sie können bis heute nächstes Jahr warten. Daher sollten Sie die Funktion pcntl verwenden.

Angenommen, ich möchte 20 Prozesse starten und 1-80 W Daten in 20 Teile aufteilen. Der Hauptprozess wartet, bis alle untergeordneten Prozesse abgeschlossen 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);
  }
}
Nach dem Login kopieren

Wenn pcntl_fork herauskommt, wird ein PID-Wert im untergeordneten Prozess zurückgegeben und ist der PID des untergeordneten Prozesses im übergeordneten Prozess (>0). Ein -1 zeigt an, dass bei der Verzweigung ein Fehler aufgetreten ist.

Die Verwendung eines $pids-Arrays ermöglicht es dem Hauptprozess, auf den Abschluss aller Prozesse zu warten, bevor er beendet wird.

Ich hoffe, dass dieser Artikel für das PHP-Programmierdesign aller hilfreich sein wird.

Weitere Artikel zu PHPs pcntl-Multiprozess-Nutzungsbeispielen finden Sie auf der chinesischen PHP-Website!


Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage