質問「 php execute a background process 」の拡張として:
対話型bashシェルのように、PHP セッション中にプロセスを実行し続けたいとします。PHP がプロセスに読み書きできるように stdout/stdin のリダイレクトを確立するにはどうすればよいですか?
更新: 重要なのは、プロセスを開始してバックグラウンドで実行し続け、後でリクエストが stdout/stdin ストリームにアクセスできるようにすることです。
質問「 php execute a background process 」の拡張として:
対話型bashシェルのように、PHP セッション中にプロセスを実行し続けたいとします。PHP がプロセスに読み書きできるように stdout/stdin のリダイレクトを確立するにはどうすればよいですか?
更新: 重要なのは、プロセスを開始してバックグラウンドで実行し続け、後でリクエストが stdout/stdin ストリームにアクセスできるようにすることです。
PHP Expectを使用します。ドキュメントには、非常に優れた使用例がいくつかあります。
Linux を使用している場合は、/proc で proc ファイル システムにアクセスできます。ディストリビューションは多少異なる場合がありますが、Ubuntu Server では、/proc/<pid>/fd/[012] で stdio を見つけることができます。0 は標準入力、1 は標準出力、2 は標準エラー出力です。これらを /dev/null から、または /dev/null にリダイレクトする場合、これはおそらく機能しません。これは、実行時間の長いバックグラウンド プロセスをスピンオフする方法がいくつかあるためです。バックグラウンド プロセスの pid (a la http://nsaunders.wordpress.com/2007/01/12/running-a-background-process-in-php/ ) にアクセスできる場合は、アクセスできるはずです。 Linux のプロセスの stdin / stdout。
PHPを使用してユーザー入力コマンドをシェルに中継している場合は、shell_execへの複数の呼び出しを使用できます。
shell_execは完全な出力を返し、それをユーザーにエコーバックできます。