Heim  >  Artikel  >  PHP-Framework  >  So kommunizieren Sie zwischen Swoole-Prozessen

So kommunizieren Sie zwischen Swoole-Prozessen

(*-*)浩
(*-*)浩Original
2019-12-02 14:19:132988Durchsuche

So kommunizieren Sie zwischen Swoole-Prozessen

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!

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
Vorheriger Artikel:Was kann Swoole?Nächster Artikel:Was kann Swoole?