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( 'lastid' => $max / $workers * $i, 'maxid' => $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 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!