PHPで外部のコマンドラインプログラムを実行し、標準入力によるデータの入力や標準出力からのデータの受取りをしながら、対話的に処理を進める方法。
関数 proc_open() を使う。
<?php
$inout = array(
0 => array('pipe', 'r') //標準入力 ('pipe' or 'file')
, 1 => array('pipe', 'w') //標準出力 ('pipe' or 'file')
, 2 => array('file', '/tmp/proc_open_error.log', 'a') //エラー出力 ('pipe' or 'file')
);
$proc = proc_open('php', $inout, $pipes); //外部プログラムとしてphpを実行する場合
if (is_resource($proc)) {
fwrite($pipes[0], '<?php echo "Hello proc_open()!"; ?>'); //標準入力として渡す文字列
fclose($pipes[0]);
echo stream_get_contents($pipes[1]); //標準出力から受け取る
fclose($pipes[1]);
echo 'return value = ' . proc_close($proc);
//参考:proc_close()の前に全てのpipeを閉じる必要があるらしい
}
参考: PHP: proc_open - Manual
0 件のコメント:
コメントを投稿