gpt4 book ai didi

php - 在 php 中运行 shell 命令并实时输出

转载 作者:行者123 更新时间:2023-12-04 16:17:58 27 4
gpt4 key购买 nike

我通过 php move_uploaded_file 函数上传文件,然后该文件被作为 java 程序的参数。当java程序执行时,它会在终端中输出进度。 java 程序的输出是执行相同操作的 perl 脚本的输入。我在我的 php 网站中将所有这些作为 shell_exec 函数执行,并将它们打印在屏幕上

    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

谢谢

最佳答案

使用 ob_end_flush 禁用输出缓冲,并使用 proc_open 而不是 shell_exec 启动进程,这样您就可以完全控制文件描述符和不需要等待该过程完成即可获取输出。当您使用 proc_open 启动进程时,从其 STDOUT 和 STDERR 读取并将其输出到浏览器,可能使用刷新以确保您的输出不会保留在任何缓冲区中.

关于php - 在 php 中运行 shell 命令并实时输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9301946/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com