Обновление Jquery DIV с прогрессом rsync

0

Я пытаюсь обновить DIV с текущим результатом команды rsync. Идея заключается в том, что я вижу, как продвигается загрузка.

Это код, который у меня есть, но я получаю ошибки, связанные с "Uncaught SyntaxError: Неожиданный токен ILLEGAL"

<?php
$down = popen('rsyncd -Pav http://ipv4.download.thinkbroadband.com/1GB.zip 1GB.zip', 'r');

while($progress = fgets($down, 124)) {
    ob_flush();flush();
?>
    <script type="text/javascript">
        $(document).ready(function() {
            var update = "<?php echo $progress; ?>";
            $("#status").html(update);
        });
    </script>

<?php
    ob_flush();
    ob_flush();flush();
}

    pclose($down);
}
?>

<div id="status"></div>

В консоли я вижу, что это связано с:

var update = "    33390592  46%    4.62MB/s    0:00:08
    34701312  48%    4.63MB/s    0:00:07
    35979264  50%    4.63MB/s    0:00:07
";

Как я могу получить каждую строку обновления и показать ее в DIV без ошибок?

благодаря

ОБНОВИТЬ

Теперь я использую это. Php echo для $ update показывает вывод в реальном времени на веб-странице, но DIV не обновляется до тех пор, пока страница не завершится, а затем я получу только последнюю строку вывода.

Почему работает php echo, но обновление jquery для div теперь работает так, как ожидалось?

<?php
$down = popen('rsyncd -Pav http://ipv4.download.thinkbroadband.com/1GB.zip 1GB.zip', 'r');
$order   = array("\r\n", "\n", "\r");

while($progress = fgets($down, 32)) {
    ob_flush();flush();
    $update = str_replace($order,'<br />', $progress);
    echo $update; // <-- this outputs fine.
?>
    <script type="text/javascript">
        $(document).ready(function() {
            var update = "<?php echo $update; ?>";
            $("#status").html(update);
        });
    </script>

<?php
    ob_flush();flush();
}

    pclose($down);
}
?>

Это связано с тем, что jquery не работает до полной загрузки страницы, поэтому div обновляется только с последней записью обновления $ update?

Если так, есть ли способ запустить jquery по мере загрузки страницы, чтобы обновить DIV?

Благодаря :)

благодаря

ОБНОВИТЬ

<script type="text/javascript">
$(document).ready(function() {
    $.ajaxSetup({ cache: false });

    $("#test").click(function () {  $("#log").load("go.php"); });

});
</script>

Просто попробовал это, он работает и вызывает go.php, и я получаю вывод, но только когда go.php завершил загрузку rsync. любой способ показать текущий результат во время загрузки?

Теги:
progress
rsync

1 ответ

2
Лучший ответ

использовать функцию str_replace() php

<?php
$order   = array("\r\n", "\n", "\r");
$replace = '<br />';
?>
<script type="text/javascript">
            $(document).ready(function() {
                var update = "<?php echo str_replace($order, $replace, $progress); ?>";
                $("#status").html(update);
            });
        </script>
  • 0
    Спасибо второе предложение останавливает ошибки, но это не работает, как ожидалось. Я обновлю свой оригинальный пост.
  • 0
    если вы хотите обновлять свой статус каждые n секунд, используйте ajax-вызов с jquery.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню