PHP から Java クラス ファイルを呼び出し、(進行状況を示す) テキスト出力をリアルタイムでユーザーのブラウザーに表示したいと考えています。、およびPHP 関数は機能せず、php/java ブリッジはやり過ぎのようですpassthru()
。以下のコード (非常に単純化されていますが自己完結型) は、表向きは Java 出力ストリームをリアルタイムで返す関数が、この場合どのように機能しないかを示しています。以下のコードでは、java への呼び出しが完了すると、テキスト ストリームがブラウザにのみ表示されます。つまり、リアルタイムの進行状況の更新はありません。echo()
system()
passthru()
私はこの解決策を試しましたが、スタックオーバーフローで提案されたような他の人は役に立ちませんでした。
コマンドがまだ実行されている間に php exec() から結果を取得しますか?
何を提案しますか?
index.html:
<html lang="en">
<head>
<meta charset="utf-8" />
<script src="jquery.js"></script>
<script type="text/javascript">
$(document).on("click","#javacode_button",function(){
$("#java_output").load("innerpage.php",function(responseTxt,statusTxt,xhr){
});
});
</script>
</head>
<body>
<div id="java_output"></div>
<input type="Button" id="javacode_button" value="Run Java Code"/>
</body>
</html>
innerpage.php:
<?php
echo 'start process <br>';
echo passthru('java timer ');
echo '<br> end process';
?>
timer.java:
public class timer {
public static void main(String args[])
throws InterruptedException {
for (int i = 0; i <= 100; i++) {
//Print a message
System.out.println("Progress = "+i+"% complete");
//Pause
Thread.sleep(150);
}
}
}