Swoole-Methode der prozessübergreifenden Kommunikation
Pipe-Pipe
Pipeline wird zwischen Prozessen verwendet Für die Dateninteraktion stellt das Linux-System selbst die Pipe-Funktion zum Erstellen einer Halbduplex-Kommunikationspipeline bereit. Bei der Halbduplex-Kommunikationsmethode können Daten nur in eine Richtung fließen (ein Ende liest nur und das andere Ende schreibt nur) und können nur zwischen Prozessen verwendet werden, die eine Beziehung haben (Eltern-Kind-Prozess). (Empfohlenes Lernen: Swoole-Video-Tutorial )
Pipes sind die grundlegendste Art der IPC-Kommunikation zwischen Prozessen. Es gibt zwei Arten von Pipes: benannte Pipes und anonyme Pipes.
Anonyme Pipe: Wird speziell zur Vervollständigung der Datenübertragung zwischen Prozessen verwendet, die durch Blut miteinander verbunden sind. Benannte Pipes: Kann zwischen zwei beliebigen Prozessen verwendet werden. Die Pipes in Swoole sind anonyme Pipes.
Verwenden Sie eventfd und UnixSock, um zwei Arten von Pipes in Swoole zu kapseln und so die Kommunikation zwischen Prozessen flexibler zu gestalten.
Swooles Process-Modul verfügt über eine integrierte Pipeline für die Kommunikation zwischen Prozessen. Solange die Option $pipe_type aktiviert ist, erstellt die unterste Ebene von Swoole automatisch eine Falls hier eine Erklärung erforderlich ist: Obwohl sie dem Namen nach eine Pipe heißt, wird die zugrunde liegende Kommunikation in der neuen Version von Swoole tatsächlich durch UnixSock implementiert, es handelt sich also nicht um eine Linux-Pipe im eigentlichen Sinne.
Prozess erstellen
swoole_process::__construct( callable $function, bool $redirect_stdin_stdout = false, int $pipe_type = SOCK_DGRAM, bool $enable_coroutine = false );
Der Rohrtyp $pipe_type kann in drei Typen unterteilt werden:
0 bedeutet, keinen zu erstellen Pipe
1 bedeutet das Erstellen einer Pipe vom Typ SOCK_STREAM
2 bedeutet das Erstellen einer Pipe vom Typ SOCK_DGRAM
Wenn $redirect_stdin_stdout aktiviert ist, ignoriert die Option $pipe_type den Benutzerparameter und zu 1 gezwungen werden.
Pipe-Deskriptor
Wenn der Prozess gegabelt wird, werden die Prozessobjekte im übergeordneten Prozess und im untergeordneten Prozess mit einer Mitgliedsvariablen namens Pipe festgelegt, die The speichert Deskriptor des zugrunde liegenden UnixSocket. Der übergeordnete Prozess und der untergeordnete Prozess können Daten über diesen Pipe-Deskriptor senden oder direkt die vom Prozess bereitgestellte Lese-/Schreibschnittstelle aufrufen, um Daten zu senden und zu empfangen.
object(Swoole\Process)#1 (6) { ["pipe"]=>int(4) ["callback"]=>NULL ["msgQueueId"]=>NULL ["msgQueueKey"]=>NULL ["pid"]=>int(287) ["id"]=>NULL}
Pipeline lesen und schreiben
swoole_process->write(string $data) Daten in die Pipe des Prozesses schreiben
swoole_process-> read (int $buffer_size = 8192) liest Daten aus der Pipe des Prozesses
Das obige ist der detaillierte Inhalt vonSo kommunizieren Sie zwischen Swoole-Prozessen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!