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 コマンドからの出力を効果的に分離してキャプチャできるため、エラーやその他の出力を処理できるようになります。
以上がproc_open は exec() と比較して PHP でのストリーム処理をどのように改善できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。