Die Prozesssteuerungsunterstützung von PHP implementiert die Prozesserstellung, Programmausführung, Signalverarbeitung und Prozessunterbrechung im Unix-Stil. Die Prozesssteuerung kann nicht in einer Webserverumgebung verwendet werden und kann bei Verwendung in einer Webdienstumgebung zu unerwarteten Ergebnissen führen. (Empfohlenes Lernen:
PCNTL verwendet jetzt Ticks als Rückrufmechanismus für die Signalverarbeitung. Ticks übertrifft den vorherigen Verarbeitungsmechanismus bei weitem. Diese Änderung folgt der gleichen Semantik wie „Benutzer-Ticks“.
Sie können die Anweisung „declare()“ verwenden, um anzugeben, wo Rückrufe in Ihrem Programm auftreten dürfen. Dadurch können wir den Overhead der asynchronen Ereignisbehandlung minimieren. Das Kompilieren von PHP mit aktiviertem pcntl verursacht immer diesen Overhead, unabhängig davon, ob pcntl tatsächlich in Ihrem Skript verwendet wird. Eine Optimierung besteht darin, dass alle pcntl-Skripte vor PHP 4.3.0, damit es funktioniert, entweder „declare()“ in dem Teil (des Codes) verwenden, in dem Rückrufe zulässig sein sollen, oder die neue globale Syntax von verwenden deklarieren(), damit es funktioniert. Gültig im gesamten Skript.Hinweis: Diese Erweiterung ist auf der Windows-Plattform nicht verfügbar.
swoole fügt ein Multiprozess-Verwaltungsmodul hinzu, um PHPs pcntl zu ersetzen. Der Unterschied zu pcntl ist:
swoole_process bietet Kommunikation zwischen Prozessen, die pcntl nicht hat. swoole_process Unterstützt die Umleitung von Standardeingaben und -ausgaben im untergeordneten Prozess, um Daten aus der Pipe abzurufen. Der untergeordnete Prozess kann asynchron sein Interprozesskommunikation (IPC) Der untergeordnete Prozess und der übergeordnete Prozess können über Pipes kommunizieren und Daten übertragen. IPC wird häufig in der Multiprozessprogrammierung verwendet. Das pcntl-Modul von PHP bietet keine IPC-Funktionen, daher sind seine Funktionen eingeschränkt. Der swoole_process stellt diese Funktionen bereit und kapselt die Schnittstelle. Die Kommunikation zwischen Prozessen kann einfach durch den Aufruf der Schnittstelle abgeschlossen werden.$worker_num = 8; for($i = 0; $i < $worker_num; $i++) { $process = new swoole_process('callback_function', $redirect_stdout); $pid = $process->start(); $workers[$pid] = $process; } function callback_function(swoole_process $worker) { //echo "Worker: start. PID=".$worker->pid."\n"; //recv data from master $recv = $worker->read(); echo "From Master: $recv\n"; //send data to master $worker->write("hello master\n"); sleep(2); $worker->exit(0); }
Das obige ist der detaillierte Inhalt vonDer Unterschied zwischen swoole und pcntl. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!