Web SSH コンソールを作成したいのですが、2 つの問題が見つかりました。
私がしたいこと。まずstart.php
、次のコードを含むファイルを実行します。
$process = proc_open('start', array(
0 => array("pipe", "r"),
1 => array("pipe", "w"),
2 => array("pipe", "a")
), $pipes);
次に、ファイルcommand.php
内に作成されたプロセスでコマンドを実行しstart.php
、そこから結果を取得するファイルを実行します。
$pid = 12345;
print_r(process_command('ping google.com', $pid));
cmd
過去に作成したプロセス ( ) にアクセスし、コマンドを送信して結果を取得したいだけです。
実行ごとに新しいプロセスを作成できるのに、なぜこれが問題なのcommand.php
ですか? 新しいプロセスは新しいセッションであるため、過去command.php
の実行で mysql にログインすると、次の実行で再度 mysql にログインする必要があります。新しいプロセスはログに記録されたことを覚えていないためです。
Windows での例。
cmd
PHP で新しいプロセス ( ) を作成します。現在のディレクトリはC:\WebServ\
です。
- コマンドを書きます。
cd /
現在のディレクトリはC:\
.
これは単なる例です。ディレクトリを変更したくないだけです。これは私にとっては問題ではありません。
mysql
問題は、1 つのプロセスを作成し、次の PHP ファイルの実行でそれにアクセスする方法です。たとえば、セッションを記憶したい場合は?
- 機能ごとにプロセスを作成できます
proc_open
。 - でPIDを取得できますが
get_process_status
、現在のPHPファイルが実行される前に作成されたプロセスリソースを取得するにはどうすればよいですか?
そして次の質問ですが、過去に作成したプロセスにアクセスできる場合、作成したプロセスに新しいコマンドを書き込む方法を教えてください。
PHP拡張機能を使用したくありません。ただし、この場合にこれが必要な場合は、それぞれの回答が役に立ちます。
他の PHP 実行で作成されたプロセスにアクセスできない場合はwhile(1)
、PHP 実行の開始時に作成されたプロセスを制御するために使用したいのですが、この場合は必要ないことを願っています。
次に、作成されたプロセスに新しいコマンドを書き込む方法を誰かが知っていることを願っていcmd
ます。