linux — отображать вывод процесса в переполнении стека

header("Content-type: text/plain");

// tell php to automatically flush after every output
// including lines of output produced by shell commands
disable_ob();

$command = 'sudo rsync -arz --progress /home/lokesh/Desktop /home/lokesh/Downloads --stats';
system($command);

function disable_ob() {
// Turn off output buffering
ini_set('output_buffering', 'off');
// Turn off PHP output compression
ini_set('zlib.output_compression', false);
// Implicitly flush the buffer(s)
//ini_set('implicit_flush', true);
ob_implicit_flush(true);
// Clear, and turn off output buffering
while (ob_get_level() > 0) {
// Get the curent level
$level = ob_get_level();
// End the buffering
ob_end_clean();
// If the current level has not changed, abort
if (ob_get_level() == $level) break;
}
// Disable apache output buffering/compression
if (function_exists('apache_setenv')) {
apache_setenv('no-gzip', '1');
apache_setenv('dont-vary', '1');
}
}

выше мой код дает мне вывод, как это.

ВЫХОД

Desktop /
Desktop / CloudRDP.bat

        336 100%    0.00kB/s    0:00:00
336 100%    0.00kB/s    0:00:00 (xfr#1, ir-chk=1055/1057)

Desktop / Песня Дней недели — 7 дней недели — Детские песни от The Learning Station.mp4

     32,768   0%  888.89kB/s    0:00:22
5,308,416  27%    5.06MB/s    0:00:02
5,636,096  28%    2.41MB/s    0:00:05
10,846,208  55%    3.20MB/s    0:00:02
15,826,944  80%    3.56MB/s    0:00:01
19,611,127 100%    3.75MB/s    0:00:04 (xfr#2, ir-chk=1054/1057)

Desktop / EnjayEsync Ver 2.4.1.rar

     32,768   1%   42.61kB/s    0:00:49
1,277,952  59%    1.22MB/s    0:00:00
2,135,855 100%    1.73MB/s    0:00:01 (xfr#3, ir-chk=1053/1057)

Desktop / EnjayOnlineProductRegistration.sql

     32,768  13%  181.82kB/s    0:00:01
235,670 100%    1.05MB/s    0:00:00 (xfr#4, ir-chk=1052/1057)

Но я хочу посчитать номер передачи файла с помощью поиска «XFR #«string. Как это возможно. Я пытался зациклить, но не смог сделать это. Значит после получения этой строки (XFR # 4) это покажет мне вывод 4.

1

Решение

Если вам нужна не только последняя строка вывода команды, то вместо система — выполнить внешнюю программу и отобразить вывод — использование popen — открывает указатель файла процесса — (читать построчно) или exec — выполнить внешнюю программу (чтобы получить массив, заполненный каждой строкой вывода).

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]