2011-06-23 7 views
7

私はここで暗闇の中で撮影しています。毎秒更新されるウェブページにtxtファイルを表示します。

私は、テキストファイル(サーバーログ)を表示するWebサイトを持っている:私はとても便利なチュートリアルにいくつかのポインタおよび/またはリンクは素晴らしいことだこれを行うにはどのように知識がありません。おそらく埋め込まれています。問題は、このファイルは、サーバーでイベントが発生するたびに更新されます(通常0.5秒以上)。ウェブページがリアルタイムでファイルを表示するように、ファイルのライブフィードを表示するようにするにはどうすればよいですか?

私の推測では、javascriptとAJAXが使用されていますが、両方の知識はかなり限られています。 任意のポインタとヘルプがあります:)

答えて

8

私の答えは、ASPやその他の言語に変更することは難しくありませんが、PHPとAjaxを使用しています。ヘッドボディに

<script type="text/javascript"> 

     function Ajax() 
     { 
      var 
       $http, 
       $self = arguments.callee; 

      if (window.XMLHttpRequest) { 
       $http = new XMLHttpRequest(); 
      } else if (window.ActiveXObject) { 
       try { 
        $http = new ActiveXObject('Msxml2.XMLHTTP'); 
       } catch(e) { 
        $http = new ActiveXObject('Microsoft.XMLHTTP'); 
       } 
      } 

      if ($http) { 
       $http.onreadystatechange = function() 
       { 
        if (/4|^complete$/.test($http.readyState)) { 
         document.getElementById('ReloadThis').innerHTML = $http.responseText; 
         setTimeout(function(){$self();}, 1000); 
        } 
       }; 
       $http.open('GET', 'loadtxt.php' + '?' + new Date().getTime(), true); 
       $http.send(null); 
      } 

     } 

    </script> 


<script type="text/javascript"> 
     setTimeout(function() {Ajax();}, 1000); 
    </script> 
    <div id="ReloadThis">Default text</div> 

</body> 
今テキストファイル

<?php 
     $file = "error.txt"; 
     $f = fopen($file, "r"); 
     while ($line = fgets($f, 1000)) { 
      print $line; 
     } 
    ?> 
0

jQuery .getを使用して数秒ごとにファイルを取得し、内容を表示するページを更新することができます。これを行うための様々な方法があり

+0

関数ウィッヒの値を読み取るloadtxt.php使用ケビンが必要です'setInterval(Method、Duration) ' – reporter

+0

jqueryの例とその実装方法を教えていただけますか? – dukevin

+0

http://jquery-howto.blogspot.com/2009/04/ajax-update-content-every-x-seconds.html – Jon

0

...あなたはlong polling

を見ることができます。

スティックmeta refresh tagは、ページごとにX秒を更新します。

tail -f /path/to/log.logは、そのファイルの最後の数行のライブプレビューを開きます。これは、デバッグ時にエラーログを読み込む必要がある場合に行います。

ページを手作業で更新すると、内容が自動的に変更されるという煩わしいことがあります。

あなたのファイルが非常に大きいと言いましたが、私はPHP file()関数を使用して、ファイルから最初のX量を取得し、帯域幅を下げて読みやすくしています。 jQueryのを使用して

7

、あなたは何ができる

setInterval(function() { 
    $('#element').load('/url/to/file'); 
}, 1000); 

は、1秒ごとに

+0

後で試してみて、それがどうなっているかを教えてください! – dukevin

+0

これは非常に簡潔なソリューションであり、とてもうまく動作します! – hacket

0

その他すべてのリフレッシュログファイルを読み込むが、依存について話しているファイルの内容とID elementでのdivを更新するだろう、次のこのファイルのサイズは悪い考えです。ログファイルを読み込んで、すでにどれくらいの量が与えられているかを把握し、新しいビットを与えるだけのサーバーサイドページを作成することができます。その10kファイルの場合、これを毎秒転送することは迷惑になり(潜在的に遅延する)

それ以外の場合は、他の人がクライアントサイドのもののほとんどをカバーしたようです。

+0

このファイルは約10MBです – dukevin

+0

この場合、更新を行うたびにファイル全体をダウンロードしたくないので、この種の増分更新を実行する必要があります。私は本当にこれを行うための最善の方法ではよく分かりませんが、あなたは頭の中でどのようにそれをするのかについての一般的な考えを得て、それから自分自身の質問で特定のビットについて助けを求めたいでしょう。 。 – Chris

関連する問題