Web サーバーで Java プログラムを実行し、PHP 変数からの引数を渡していますが、少し混乱した問題に直面しています。私が使用している Java プログラムは、シェルから実行すると、PHP で shell_exec() から実行すると、異なる動作を示すようです。
Putty のようなツールを使用してコマンドラインからプログラムを実行すると、次のようになります。
ksh runexample.ksh ClassName methodName
正常に実行されます。つまり、プログラムが要求を送信し、約 20 秒後に接続先のゲートウェイ サーバーから応答を受信します。その後、外部データベースで結果のレコードを確認することで、通信が成功したことを確認できます。
を使用して PHP スクリプトからこのプログラムを実行すると、問題が発生します。
shell_exec('path/ssh user@xxx.xx.xxxx.xx.x "cd /path/path/examples/ ksh runexample.ksh ClassName methodName;')
この PHP スクリプトをロードし、出力を var_dump() すると、プログラムがロードされたように見えます。しかし、「接続モードで実行されているプログラムなど」などのJavaプログラムからの短い一般的なメッセージが表示され、通常の応答は出力されません。PHP スクリプトは、この出力でほぼ瞬時にページを読み込みます。また、外部データベースにはレコードが作成されません。
スクリプトに set_time_limit(0) がありますが、この問題は、Java プログラムの要求/応答が完了する前に shell_exec() がタイムアウトしたことが原因でしょうか?
洞察/同様の経験をありがとう、私は助けに感謝します!