在 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中文网其他相关文章!