繁体   English   中英

在网页中显示实时wget输出

[英]Show real time wget output in a web page


我正在使用php的 shell_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();
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM