Hier gibt es viele Fragen, von denen einige keine kanonische Antwort haben. Lesen Sie dies bitte als meine 0,02 $ und nicht als "grundlegende Wahrheit".
- Eingabeüberprüfung: Ich halte es für fleißig, die Eingabe so früh wie möglich zu überprüfen. In Ihrem Fall wäre dies einmal unmittelbar nach dem Start des PHP-Skripts, das zweite Mal unmittelbar nachdem das Python-Skript die Anforderung über das FIFO erhalten hat, und das dritte Mal nachdem das PHP-Skript die Antwort vom FIFO erhalten hat.
- Interface-Datenformat (Escapeing): Sie könnten (und IMHO sollte) versuchen, eine in der Praxis erprobte Bibliothek zu verwenden, um dies zu erreichen: JSON kommt in den Sinn, da sowohl PHP als auch Python über gute Codierungs- / Decodierungsbibliotheken verfügen. In diesem Fall würde ich die Daten unmittelbar vor dem Schreiben in den FIFO codieren und sofort danach decodieren. In der Tat sollten Sie ein "send_to_interface" / "receive_from_interface" -Methodenpaar auf jeder Seite in Betracht ziehen, das die Kodierung / das Schreiben bzw. das Schreiben kombiniert. Lesen / Dekodieren in ein Atom. Wenn Sie einen anderen Schnittstellenmechanismus verwenden möchten, müssen Sie einfach ein neues Paar erstellen, ohne den Rest des Codes berühren zu müssen.
- FIFO-Besitz und -Privilegien: Ich möchte eine Gruppe erstellen, die nur aus dem Servicebenutzer und dem WWW-Benutzer besteht, und dann einen
chgrp servicegroup && chmod 660
FIFO-Vorgang durchführen. Möglicherweise möchten Sie auch mit einem Socket anstelle eines FIFOs recherchieren. Dies erleichtert die Privilegiensituation und bereitet Sie auf eine Situation vor, in der der Dienst und der Webserver nicht auf demselben Computer ausgeführt werden. Je nachdem, was Ihr Python-Dienst tut, lohnt es sich möglicherweise, ihn in einer Web-Schicht auszuführen und cURL auf der PHP-Seite zu verwenden, um darauf zuzugreifen. Die Einkapselung, die zuvor in dem Aufzählungspunkt vorgeschlagen wurde, erleichtert das Wechseln zwischen diesen verschiedenen Mechanismen.