在网页中显示实时wget输出




我正在使用phpshell_exec函数调用shell脚本,在该脚本中,我将使用wget命令将文件从另一台服务器下载到托管该php页面的服务器,并在完成该过程后向我的页面发送报告。它运行良好。

这是我的TestFile.php文件

<?php
$output = shell_exec("sudo /home/user/myScript");
echo "<pre>$output</pre>";
?>

我的bash脚本myScript

#!/bin/sh
sudo wget -O /path/to/download/downloadfile http://example.com/TestFile.zip

但是我想在我调用shell脚本的网页上显示wget操作的实时进度。我只想以百分比的形式显示实时进度。通过这种方式,我可以使用命令将wget的进度百分比发送到网页

sudo wget -O /path/to/download/downloadfile http://example.com/TestFile.zip 2>&1 | grep -o "[0-9]+%"

输出类似于

2%
4%
6%
8%
...
...
...
95%
97%
99%
100%

但这个输出是在完成过程之后产生的。在进程运行时,窗口不会显示任何内容。但我不想要这个。

我希望在wget进程运行时实时更新进程,而不是在完成命令之后

有人能帮我解决这个问题吗

提前感谢。

目前无法测试它,但类似的东西应该可以工作:

<?php
ob_start();
$descriptors = [
['pipe', 'r'],
['pipe', 'w'],
['pipe', 'w'],
];
$process = proc_open('wget blahblah', $descriptors, $pipes, '/tmp', []);
if(is_resource($process)) {
while ($line = fgets($pipes[1])) {
echo $line;
ob_flush();
}
}

相关内容

  • 没有找到相关文章

最新更新