@polzovatel_vue

Как получить прогресс rsync с помощью proc_open?

Добрый день. Пытаюсь не могу отловить прогресс rsync, при выполнении команды php "proc_open"
$query = "rsync --bwlimit=20000 --delete --chmod=ugo=rwX --modify-window=5 -rlpgoD --contimeout=3600 '$client_root/$src' --exclude=*/en_us/client/sandbox --info=progress2 --no-i-r --exclude=*/en_us/server/sandbox  $host::drive_$drive_letter/$path";
    $descriptors = array(
        0 => array("pipe", "r"),
    );
    $proc = proc_open($query, $descriptors, $pipes);
    $exitCode = proc_close($proc);


На выводе дает прогресс, но не получается его отловить, чтобы вывести

5df8a51185636424750262.png

Подскажите, как это выловить?
  • Вопрос задан
  • 109 просмотров
Решения вопроса 1
@polzovatel_vue Автор вопроса
Решил вопрос с помощью popen и fgets. Если fgets задать задать length, то он так же будет работать, только прогресс можно задать в переменную и вывести ее.

$query = 'rsync --bwlimit=20000 --delete --chmod=ugo=rwX --modify-window=5 -rlpgoD --contimeout=3600 '.$client_root.'/'.$src.' --exclude=*/en_us/client/sandbox --info=progress2 --no-i-r --exclude=*/en_us/server/sandbox  '.$host.'::drive_'.$drive_letter.'/'.$path;
    $proc = popen($query, 'r');
    while($progress = fgets($proc, 12)) {
    echo $progress;
    }
    pclose($proc);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы