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

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

藏色散人
Freigeben: 2023-04-07 17:32:01
nach vorne
2347 Leute haben es durchsucht

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);
Nach dem Login kopieren
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!

Verwandte Etiketten:
php
Quelle:learnku.com
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage