3

PHPを介して実行中のコンソールプログラム(できればLinux / Debianで実行中)と通信する方法があるかどうか知りたいです。私は現在、小さな(既存の)コンソールJavaプログラム用のWebインターフェイスを作成しようとしていますが、これを実行できる方法があるかどうかわかりません。たとえば、リモートコントロールモジュールなどのコードを「挿入」してから、これを使用してPHP経由でスクリプトを「リモートコントロール」することはできますか?(既存の.jarファイルが変更されない/インジェクションのみで再プログラミングが行われないと便利です)

すべてのアドバイスに感謝します!

4

2 に答える 2

3

実行中のプログラムに通信インターフェイスがない場合は、通信できません。ただし、そうである場合、答えはプログラムが外部入力を受け取る方法に大きく依存します。

プログラムにネットワーク リッスン スレッド (デーモン) が含まれている場合は、CURL または PHP の raw ソケットを使用して、ループバック インターフェイスでそのスレッドと通信できます。

プログラムと通信する他の方法は、ファイルへのアクセスを共有する (PHP がファイルを書き込み、Java が読み取る) か、データベースを介することです。

データベースが最適なオプションです。これはスレッド セーフであり、PHP と Java の両方が優れた MySQL サポート (JDBC 経由の Java) を備えています。

ただし、実行中のプログラムと実際にやり取りする必要がなく、単に開始/停止/再起動するだけでよい場合は、PHP の system() 関数を使用してこれを行うことができます。

于 2012-04-24T17:56:22.407 に答える
1

Java プログラムが実行されてコンソールに出力されるだけであれば、次のように簡単に実行できます。

$output = system( "java com.yourcompany.package.RunnableClass" ); 
print $output;

もちろん、PHP を実行しているユーザーが Java バイナリにアクセスできること、および JAR ファイルにアクセスする権限があることを前提としています。

実行中のプログラムにアクセスするのは少し難しくなります。ほとんどのプログラムには、デフォルトではこれが組み込まれていません (また、そうすべきでもありません。多くの場合、ランダムな外部プロセスへのアクセスを許可することは望ましくありません)。しかし、そうであれば、あなたは元気です。そうでなく、Java コードを変更できる場合は、問題ありません。そうでない場合は、運が悪い可能性があります。

その場合は、Java コードがどのリソースにアクセスしているか、およびそれらにどのようにアクセスしているかを確認することも良い方法です。次に、PHP で似たようなものを書くことができます。車輪を再発明することになるため、明らかにこれは理想的ではありませんが、データなどにアクセスする必要があり、上記のアプローチのいずれも使用できない場合は、うまくいきます。

于 2012-04-24T17:50:25.413 に答える