Heim  >  Artikel  >  Backend-Entwicklung  >  Multiprozess-Named-Pipe-Kommunikation [nicht verwandte Prozesse] PHP-Version

Multiprozess-Named-Pipe-Kommunikation [nicht verwandte Prozesse] PHP-Version

藏色散人
藏色散人nach vorne
2019-10-19 14:39:192329Durchsuche

Prozesskommunikation:

1. Interrupt-System

2. Unbenannte Pipe [Halbduplex-Kommunikation]

kann nur für Eltern verwendet werden -Untergeordnete Prozesse: Die Kommunikation zwischen Geschwisterprozessen ohne Namen wird als unbenannte Pipe bezeichnet. Die übertragenen Daten sind unformatiert. Beide Parteien können das Format selbst definieren und sind nicht auf das Dateisystem angewiesen.

Empfehlung: „PHP-Tutorial

3. Benannte Pipes

werden für problematische Vorgänge verwendet, die mit namenlosen Pipes nicht erreicht werden können, auch nicht für Prozesse Das hat nichts mit ihnen zu tun. Es basiert auf einem Dateideskriptor, aber diese Datei ist eine Datei vom Typ FIFO, also eine Pipeline-Datei, und folgt dem FIFO-Prinzip, das heißt, die Warteschlange steht an erster Stelle. zuerst raus]

PS: Stellen Sie sicher, dass Sie Prozessblockierung, Nichtblockierungsprinzip, Pipeline-Datei, Prozess [laufende Statusübertragung] verstehen

Beispiele für Anwendungsszenarien: Zum Beispiel, wenn Sie den Socket von PHP verwenden Mit der API zum Schreiben eines Netzwerk-Frameworks ähnlich wie bei Workerman können Sie eine einheitliche Verarbeitung von Interrupt-Signalereignissen durchführen.

Der Interrupt-Handler ist nur für die Annahme von Interrupt-Anfragen und das Schreiben von Daten über die Pipeline verantwortlich den Dateideskriptor [lesbare Ereignisse]. Sie können sich die Stream-Socket-bezogene API privat ansehen und mehr über die IO-Multiplexing-Funktion erfahren. Der Interrupt-Handler wird nicht zu lange warten müssen.

Natürlich kann die Kommunikation zwischen sprachübergreifenden Prozessen auch über Named Pipes erreicht werden.

$filePath = $argv[1];
if (posix_mkfifo($filePath,0666)<0){
    fprintf(STDOUT,"命名管道创建错误");
    exit(0);
}
$fd = fopen($filePath,"w");
while (is_resource($fd)){
    fprintf(STDOUT,">");
    $data = fgets(STDIN);
    if ($data){
        fwrite($fd,$data,strlen($data));
    }
}
exit(0);
rrree

Das obige ist der detaillierte Inhalt vonMultiprozess-Named-Pipe-Kommunikation [nicht verwandte Prozesse] PHP-Version. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:learnku.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen