Parantatatam
mag Cookies & Kekse
Hallo liebe Tutorianer,
ich beschäftige mich gerade mit einem Gebiet von PHP, welches nur sehr dünn im Netz abgedeckt ist: einen PHP-basierten Webserver. Das ist an sich kein Problem, jedoch gibt es eine Stelle, an der ich gerade nicht weiterkomme. Vorher aber erstmal das, was ich bereits habe:
Es geht mir jetzt darum, dass ich zwischen der Datei, welche die eigentliche PHP-Seite lädt, also den Elternprozess, und dem Kindprozess kommunizieren kann, damit ich beispielsweise auf bestimmte Ereignisse eingehen kann. Wozu ich das brauche? Meine Idee besteht darin, dass ich die Superglobalen von PHP vor dem eigentlichen Dateiaufruf füllen will. Das ist durchaus möglich, beispielsweise, wenn ich vor der Datei eine andere Systemdatei lade, welche die Variablen manipuliert. Jedoch funktionieren dann Funktionen wie filter_input nicht, da diese auf die Urdaten der Superglobalen zugreifen. Diese Urdaten sind es, welche ich nutzen will. Denn ich habe vor den Funktionenbestand meines Servers um Funktionen wie authenticate per default zu erweitern. Letztgenannte Funktion soll dem Programmierer die Validierung und Verarbeitung der Basic und Digest Access Authentication abnehmen. Dafür möchte ich aber nicht auf $_SERVER zurückgreifen, sondern auf eine Variable mit Systemvariablen, welche der Programmierer nicht verändern kann.
Eine Idee, die ich bereits versuchte, ist, dass ich einen eigenen Stream-Wrapper registriere. Allerdings existieren diese nicht im Kindprozess, wenn ich sie im Elternprozess registriere. Gibt es eine Möglichkeit einen globalen Wrapper wie compress.zlib, file oder php mit PHP zu erstellen?
Hoffentlich ist das jetzt nicht zu verworren für euch. Falls doch, fragt bitte nach.
ich beschäftige mich gerade mit einem Gebiet von PHP, welches nur sehr dünn im Netz abgedeckt ist: einen PHP-basierten Webserver. Das ist an sich kein Problem, jedoch gibt es eine Stelle, an der ich gerade nicht weiterkomme. Vorher aber erstmal das, was ich bereits habe:
PHP:
$descriptors = array(
array('pipe', 'r'),
array('pipe', 'w'),
array('file', __DIR__ . '/proc/error.log', 'a'),
);
if(($process = proc_open('php', $descriptors, $pipes, __DIR__ . '/proc')) !== false) {
fwrite($pipes[0], file_get_contents(__DIR__ . '/proc/test.php'));
fclose($pipes[0]);
var_dump(stream_get_contents($pipes[1]));
fclose($pipes[1]);
echo 'return: ' . proc_close($process);
}
Eine Idee, die ich bereits versuchte, ist, dass ich einen eigenen Stream-Wrapper registriere. Allerdings existieren diese nicht im Kindprozess, wenn ich sie im Elternprozess registriere. Gibt es eine Möglichkeit einen globalen Wrapper wie compress.zlib, file oder php mit PHP zu erstellen?
Hoffentlich ist das jetzt nicht zu verworren für euch. Falls doch, fragt bitte nach.