我通过php move_uploaded_file
函数上传文件,然后将该文件作为java程序的参数。当java程序正在执行时,它会输出终端中的进度。 java程序的输出是一个perl脚本的输入,它执行相同的操作。 我执行所有的人都在我的PHP网站作为了shell_exec功能和打印他们在屏幕上在php中运行shell命令实时输出
echo "Running java ..... ";
$output=shell_exec("java -jar abc.jar ".($_FILES['uploaded']['name']));
echo "<pre>$output</pre>";
echo "running perl .....";
$output=shell_exec("perl abc.pl outputfromjava.txt");
echo "<pre>$output</pre>";
的shell命令运行的很好,但是从Java和Perl的输出没有在我的网站上显示。我尝试在执行java和perl之后刷新代码中的页面,但它也刷新了上传。
输出是现在
Running java ....
Running Perl ....
我应该怎么写我的PHP使输出为
Running Java...
Progress1 //from java output
progress2 //from java output
Running Perl....
Progress1 //from perl output
progress2 //from perl output
感谢
我使用的系统代替了shell_exec和它的工作(Windows机器+ WAMP的服务器上测试)。 proc_open是否比系统有更多优势? – Ank 2012-02-16 21:04:00
绝对!你基本上可以完全控制过程和它的fd(输入/输出)。也就是说,当命令运行时,脚本会继续(在'proc_open'后面),从而带来很多潜在的好处。 – mvds 2012-02-16 21:56:51