0

特定のプロセスを開始してから、そのプロセスのログファイルを表示する別のページにリダイレクトできるWebページがあります。実行には最大10分かかるため、ログページ自体を自動更新するか、ファイルからデータを定期的にロードする必要があります。

今私は追加しました

<meta http-equiv="refresh" content="5;url=log.php#bottom" /> 

html / headに移動しますが、より良い解決策があるかどうか疑問に思います。誰かがこの問題に取り組むことについて何かアドバイスを与えることができますか?

4

4 に答える 4

1

私はそれをこのようにします:

var current_length = 0;
function update() {
  setTimeout(update, 3000);
  $.post("/update_url", { 'current_length': current_length }, function(data) {
    if (data.current_length != current_length) return; //it's too old answer
    $("#log").html($("#log").html() + data.text);
    current_length += data.text.length;
  }, "json"); 
}
update();

サーバーは最初に数バイトをスキップし、current_lengthと残りのファイルを含むjsonを送信する必要があります。

プロセス出力を保存するためにmemcachedを使用することを好みます。

于 2010-07-15T10:49:41.523 に答える
1

あなたは出来る:

  • サーバーを定期的にポーリングして、さらにメッセージがあるかどうかを確認します。基本的には、javascriptを使用してPHPスクリプトを呼び出し、最後のポーリングでログファイルの長さを渡してから、新しいデータをドキュメントに挿入します。サーバーは、そのオフセット以降のすべてのデータと新しい長さを返します。
  • (より簡単)ファイルを読み取り続け、新しいデータがあればすぐにエコーしてフラッシュする、長寿命のPHPスクリプトを作成します。PHP:常に書き込まれているファイルをライブで読み取る方法を参照してください。
于 2010-07-15T10:25:35.793 に答える
0

これを行うには、AJAXを使用します。jQueryで簡単:

    <script type="text/javascript">

    $(function(){
        window.setInterval('updateLog()', 5000);
    });

    function updateLog() {
        $.get('log.php');
    }

    </script>
于 2010-07-15T10:24:18.103 に答える
0

javascriptを使ってみませんか?

setIntervalを使用して、log.phpへのAJAX呼び出しを定期的に実行します。

iframeを使用することもできますが、私の意見では、AJAXの定期的な呼び出しがより良い方法です。

于 2010-07-15T10:24:19.927 に答える