在PHP 中利用proc_open 進行流處理
在PHP 中使用exec() 時,在以下情況下檢查stderr 也是有益的錯誤。雖然可以選擇使用 php://stderr,但 proc_open 提供了一種綜合方法來分別處理 stderr 和 stdout 流。
考慮以下範例:
// 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);
透過利用proc_open 和指定的流描述符,您可以有效地分離和捕獲PHP 命令的輸出,從而允許您適當地處理錯誤和其他輸出。
以上是與 exec() 相比,proc_open 如何改進 PHP 中的流處理?的詳細內容。更多資訊請關注PHP中文網其他相關文章!