我想从PHP调用java类文件,并实时向用户的浏览器显示文本输出(指示进度)。 passthru()
,echo()
和system()
PHP函数不起作用,并且php / java桥看起来有点矫枉过正。下面的代码(非常简化但是自包含)演示了passthru()
函数如何实时返回java输出流,在这种情况下不起作用。在下面的代码中,只有在完成对java的调用后,文本流才会出现在浏览器中,即没有实时进度更新。
我已经尝试过这个解决方案,而其他人喜欢在Stack Overflow上提出建议,但无济于事。
Grab results from a php exec() while the command is still running?
你会建议什么?
的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);
}
}
}