2010-11-28 6 views
2

私は、ループを使用してリアルタイムでいくつかのコンテンツを訪問者に表示しようとしています。問題は、コンテンツが新しいものではなく出力に追加されることです。ここでは、10から0までカウントされるコードの例を示します。出力には、後ろ向きにカウントするのではなく、結果全体が表示されます。私は、カウンターが行くごとにすべての数字がちょうど数字で表示されるのを見たくないということです。コンテンツのPHPリアルタイム出力

ob_end_flush(); 
     //start buffering 
     ob_start(); 

     echo str_pad ('', 1024); // minimum start for Safari 
     for ($i = 10; $i > 0; $i --) { 
      echo str_pad ("$i<br>\n", 8); 
      ob_flush(); 
      flush(); 
      sleep (1); 
     } 
     die(); 
+4

HTTPの仕組みです。 1つのリクエストで1つのレスポンスを送信します。 – Gumbo

答えて

0

はトリックか何か(1つか2つの考え)が、それはブラウザからAjaxの自動更新である行うための最も適切な方法があるかもしれません。 thisのパターンの説明のように。

0

実際にはjsを使用してPHPでこれをやっていませんでした。 (スタッカーの助けを借りて)あなたは数を逆にすることができます

しかし、これはあなたの質問に答えていない場合はごめんなさい。ここでは、私たちのdevのサイト上

デモは< link>

また

2

これはへと、単独のPHPで達成することはできません(再び、使用jqueryのは、div要素をリフレッシュするために適切ではないかもしれない)ことができますブラウザーでレンダリングされる内容を変更するには、クライアント側の介入が必要です。

この分業の仕組みは、必要なものによって異なります。

コードがすべての場合は、JSルーチンを作成して時間を計って数値をカウントするほうがはるかに良いでしょう。

PHPで数値を生成する必要がある場合は、更新の世代を複数のPHP呼び出しに分割できるかどうか、または単一のPHP内からのものでなければならないかどうかを判断する必要がありますその呼び出しの中で実行されるアクションのために呼び出します。

前者の場合、これを分離することができます。これは理想的な状況です。その後、更新された情報を定期的に取得するようにAJAX呼び出しを設定します。

1つのページからのものでなければならない場合、新しいコンテンツが生成された状態で接続を開いたままにしておく必要があります。

この場合、古いコンテンツを置き換える新しいコンテンツを取得するには、JSコードでこれを処理する必要があります。ページ上で定期的に実行されるコードは、新しいコンテンツをチェックしてそれに応じて更新するか、または更新を実行するコードを注入する少しのトリックを再生することができます。

送信中新しい表示要素ではなく更新を実行するコンテンツがうまくいきます。ブラウザが新しい<script>要素を受信すると少しうまくいきます。これは、プッシュアップデートがプラグインなしのWebページに作成できることを私が認識している唯一の方法です。

関連する問題