2016-05-25 8 views
0

LAGE:Mit Hilfe eines PHP-Named Pipe

$pipeFile = "/files/queue"; 
posix_mkfifo($pipefile,0666); 

und jetzt in der Lage sein möchte ich senden:

ich eine Named Pipe (in php) mit dem folgenden Code erstellt haben und extrahieren Daten zu und von der Rohrleitung mit php Seiten (wie readpipe.php und put_in_pipe.php).


FRAGE:

Welche Funktion Anrufe gibt, die ich in PHP-Dateien verwenden können, die Daten senden kann zu dem Named Pipes und Empfangsdaten aus dem Named Pipes?

Wichtig: ich schon jetzt, wie die Daten senden und zu empfangen und aus dem Rohr über das Terminal:

echo lol > /files/queue 
cat /path/to/pipe 

Was ich weiß nicht, wie dieses Skript in einer PHP zu tun. Wenn ich eine Seite namens readpipe.php habe und jemand sie eingibt, müsste die Seite einen Funktionsaufruf haben, um die nächste Nachricht innerhalb der Pipe zu bekommen (genau wie cat ... für das Terminal tun würde), und ähnlich eine Seite genannt put_in_pipe.php würde Code benötigen, der eine Nachricht in die Pipe (wie echo lol > ...) legt.

Alle und alle Feedback wird sehr geschätzt!

Antwort

0

Sie können alle in PHP verfügbaren Datei-E/A-Funktionen verwenden, z. file_put_content/file_get_content in die Named Pipe schreiben und daraus lesen, aber ich bezweifle, dass es das ist, was Sie wollen. Pipes können in dem von Ihnen beschriebenen mehrseitigen Szenario kaum verwendet werden.

+0

Es muss aber etwas da draußen sein. Ich meine, Inter-Server-Prozess-Kommunikation ist wahrscheinlich sehr verbreitet. Ich weiß, dass ich Textdateien in Ordnern erstellen kann und dass Skripts prüfen, ob Dateien vorhanden sind und Daten darin gefunden werden, aber das scheint sehr ineffizient zu sein. Ich dachte, vielleicht ist ein Warteschlangensystem eine gute Option, aber alle Warteschlangen, die ich online gefunden habe, sind mit Named Pipes/Sockets wie pheanstalk codiert. Würden Sie eine Alternative für die Inter-Server-Prozess-Kommunikation empfehlen? Ich bin momentan in meiner letzten Hoffnung. – Webeng

+0

Das ist eine andere, aber viel bessere Frage. Meinung basiert leider. Abhängig von der Art der "Inter-Server" -Kommunikation und dem Grad der Persistenz, die Sie benötigen, kann es eine Datenbank (sql, nosql, einfache Datei usw.) oder ein Nachrichtenbroker (activemq, gearman, rabbitmq, um nur einige zu nennen) sein. –

+0

In Ordnung, diese Optionen zum Beispiel zu analysieren. Ist BeanStalkd/BeanStalk/Pheanstalk ein Nachrichtenbroker? Denn das war das Warteschlangensystem, das ich ursprünglich betrachtete, aber das würde in die "kann kaum in einem mehrseitigen Szenario verwendet werden Sie (bedeutet I) beschrieben" -Situation, da es in der Tat eine Warteschlange ist, die Named Pipes verwendet, und Ich glaube, Rabbitmq ist auch (ich könnte falsch liegen). Andererseits, wenn man über Datenbanken spricht, ist es sehr üblich, Datenbanken speziell für den Zweck zu verwenden, Daten von einem Skript zu einem anderen zu senden? Siehst du irgendwelche Vor- oder Nachteile in der Sache? – Webeng

Verwandte Themen