Я пытаюсь обновить 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. любой способ показать текущий результат во время загрузки?
использовать функцию 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>