3

質問「 php execute a background process 」の拡張として:

対話型bashシェルのように、PHP セッション中にプロセスを実行し続けたいとします。PHP がプロセスに読み書きできるように stdout/stdin のリダイレクトを確立するにはどうすればよいですか?

更新: 重要なのは、プロセスを開始してバックグラウンドで実行し続け、後でリクエストが stdout/stdin ストリームにアクセスできるようにすることです。

4

3 に答える 3

2

PHP Expectを使用します。ドキュメントには、非常に優れた使用例がいくつかあります。

于 2010-07-14T20:06:03.787 に答える
1

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。

于 2010-09-28T17:23:12.213 に答える
0

PHPを使用してユーザー入力コマンドをシェルに中継している場合は、shell_execへの複数の呼び出しを使用できます。

shell_execは完全な出力を返し、それをユーザーにエコーバックできます。

于 2010-07-14T20:09:28.157 に答える