2014-03-28 4 views
0

rsync 명령의 진행중인 출력으로 DIV를 업데이트하려고합니다. 아이디어는 다운로드가 어떻게 진행되고 있는지를 알 수 있습니다. Jquery가 rsync 진행 상태로 DIV를 업데이트합니다.

내가있어 코드입니다,하지만 난 관련된 오류 받고 있어요 : 콘솔에서 'catch되지 않은 구문 에러를 불법 예기치 않은 토큰'

<?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에 표시하려면 어떻게해야합니까?

감사

내가 지금 사용하고

UPDATE. $ update에 대한 php echo는 웹 페이지에 라이브 출력을 표시하지만 DIV는 페이지가 완료 될 때까지 업데이트되지 않으며 출력의 마지막 줄만 가져옵니다.

왜 PHP echo가 작동 하나 div의 jquery 업데이트가 예상대로 작동합니까?

<?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의 마지막 항목으로 만 업데이트됩니까?

그렇다면 DIV가 업데이트되도록 페이지가로드 될 때 jquery를 실행할 수있는 방법이 있습니까?

감사합니다 :)

감사

UPDATE는

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

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

}); 
</script> 

그냥 작동 및 go.php를 호출하고 I 출력을 얻을 수 있지만, go.php이있는 경우에만, 위의 시도 rsync 다운로드를 마쳤습니다. 다운로드가 진행되는 동안 진행중인 출력을 표시하는 방법은 무엇입니까?

답변

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

덕분에 두 번째 제안은 오류를 중지하지만, 예상대로 작동하지 않습니다. 원래 게시물을 업데이트하겠습니다. – JeffVader

+0

n 초마다 상태를 업데이트하려면 jquery로 ajax 호출을 사용하십시오. – user3473274

+0

고마워 -이 일을하려고하지만 다운로드가 완료되었을 때만 출력을 얻습니다. AJAX로이 작업을 수행하는 예는 무엇입니까? – JeffVader

관련 문제