1

ページがあり、コンテンツはphpとMysqlで動的に取得されます。foreachループを使用してすべてのコンテンツを表示します。

foreach($data as $key){
            echo "<div id="post_content"> $key['post'] </div>";
      }

フィードをそのまま取得できるようになりましたが、ここでの問題は、データベースから新しい投稿行が表示される前に、ページを更新する必要があることです。ここで Twitter の出番です。Twitter を使用していて、フォローしているユーザーからの新しい投稿があると、フィードの上部に「1 件の新しいツイート」と表示されます。これをクリックすると、ツイートの内容がフィードに追加されます。フィード。私の調査から、これを行う方法がいくつか見つかりました。

  1. ウェブソケット。短所: ブラウザ間の互換性。

  2. AJAX の使用:refresh = setInterval(function(), 5000);短所: まあ、5 秒ごとにスクリプトをロードします :/

  3. 誰かが私に socket.io を勧めましたが、私はそれを PHP と統合する方法をまだ検討しています。

私の質問は、これを行う他の効果的な(できればシンプルで効率的な)方法はありますか?どんな助けでも大歓迎です。

4

2 に答える 2

2

問題は、ソケットに関連するものには、特定の時点で開かれる接続の量に制限があることです。したがって、何万もの同時二重接続を提供する予定がない場合は、PHP で AJAX と JSON を組み合わせて使用​​することをお勧めします。ポーリング間隔を実装することをお勧めします。たとえば、ユーザーが一定時間アクティブでない場合は、間隔を長くするか、5 ~ 10 のポーリングで新しいものが表示されないと仮定して、間隔を長くします。たとえば、2 分に達するまで毎回倍増します。メッセージまたは値を取得したら、間隔を 5 秒以下に減らします。

于 2013-01-12T14:25:59.760 に答える
1

これを行う最も簡単な方法は、ある種のAPIを提供して、新しい「ツイート」にJSONフォーマットでアクセスし、それらをHTMLの前に追加できるようにすることです。
socket.ioは、WebSocket、長いポーリングなどの複数のテクノロジーを組み合わせており、古いブラウザーを使用すると劣化するため、適切なオプションです。オンラインのsocket.ioで多くのチュートリアルを見つけることができます。ただし、socket.ioはnode.jsサーバー側のJSに依存しているため、これに慣れていない場合は、少し複雑になる可能性があります。ただし、このリンクをご覧ください:Socket.ioでのPHPの使用

于 2013-01-12T13:48:52.947 に答える