Verwendung von proc_open für die Stream-Verarbeitung in PHP
Bei der Verwendung von exec() in PHP kann es hilfreich sein, bei Bedarf auch stderr zu überprüfen Fehler. Während die Verwendung von php://stderr eine Option ist, bietet proc_open einen umfassenden Ansatz, um sowohl stderr- als auch stdout-Streams getrennt zu verarbeiten.
Betrachten Sie das folgende Beispiel:
// Initialize stream descriptors $descriptorspec = [ 0 => ["pipe", "r"], // stdin 1 => ["pipe", "w"], // stdout 2 => ["pipe", "w"], // stderr ]; // Execute the command $process = proc_open('./test.sh', $descriptorspec, $pipes, dirname(__FILE__), null); // Read from the output streams $stdout = stream_get_contents($pipes[1]); fclose($pipes[1]); $stderr = stream_get_contents($pipes[2]); fclose($pipes[2]); // Output the results echo "stdout:\n"; var_dump($stdout); echo "stderr:\n"; var_dump($stderr);
Durch die Nutzung von proc_open und dem Mit bestimmten Stream-Deskriptoren können Sie die Ausgabe Ihrer PHP-Befehle effektiv trennen und erfassen, sodass Sie Fehler und andere Ausgaben angemessen behandeln können.
Das obige ist der detaillierte Inhalt vonWie kann proc_open das Stream-Handling in PHP im Vergleich zu exec() verbessern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!