ホームページ > バックエンド開発 > PHPチュートリアル > ロングポーリングはどのように機能し、Apache、PHP、JavaScript を使用して実装するにはどうすればよいですか?

ロングポーリングはどのように機能し、Apache、PHP、JavaScript を使用して実装するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-12-26 16:46:15
オリジナル
574 人が閲覧しました

How Does Long Polling Work and How Can It Be Implemented Using Apache, PHP, and Javascript?

基本的なロング ポーリングの実装: 簡単なガイド

ロング ポーリングは、サーバーがクライアントにデータをプッシュできるようにするために使用される手法です。クライアントが明示的にそれを要求します。これは、サーバーが継続的にデータを監視し、新しいデータが到着したときにクライアントに通知する必要があるシナリオで役立ちます。

ロング ポーリングはどのように機能しますか?

ロング ポーリングでは、クライアントはサーバーにリクエストを送信し、応答を待ちます。利用可能なデータがない場合、サーバーは通常の HTTP リクエストのようにリクエストを閉じるのではなく、リクエストを無期限にオープンしたままにします。新しいデータが利用可能になると、サーバーはそれをクライアントに送信し、リクエストを閉じます。

Apache と PHP でのロング ポーリングの実装

Apache と PHP を使用してロング ポーリングを実装するには、 PHP:

  1. PHP スクリプトを作成する(msgsrv.php): このスクリプトはクライアントのリクエストを処理し、データが利用可能になったときに応答を送信します。
  2. PHP スクリプトを提供するように Apache をセットアップします。 Apache サーバーを次のように設定します。 msgsrv.php.

クライアント側へのリクエストを処理します。 Javascript を使用した実装

JavaScript を使用してクライアント側でロングポーリングを実装するには:

  1. サーバーへの最初のリクエストを作成します: クライアントはmsgsrv.php にリクエストを送信し、応答を待ちます。
  2. ハンドル成功した応答: 応答を受信した場合は、それをページ上の指定された要素に追加し、遅延後に新しいリクエストをトリガーします。
  3. エラーの処理: リクエストが失敗した場合、エラー メッセージを表示し、少し待ってから再試行します。

例コード

PHP スクリプト (msgsrv.php):

if (rand(1, 3) == 1) {
    // Fake an error
    header("HTTP/1.0 404 Not Found");
    die();
}

// Send a string after a random number of seconds (2-10)
sleep(rand(2, 10));
echo("Hi! Have a random number: " . rand(1, 10));
ログイン後にコピー

JavaScript コード (long_poller.htm):

<script type="text/javascript">
function waitForMsg() {
    $.ajax({
        type: "GET",
        url: "msgsrv.php",
        async: true,
        cache: false,
        timeout: 50000,

        success: function (data) {
            // Add response to a .msg div (with the "new" class)
            addmsg("new", data);
            setTimeout(waitForMsg, 1000); // Request next message after 1 second
        },
        error: function (XMLHttpRequest, textStatus, errorThrown) {
            // Add error message
            addmsg("error", textStatus + " (" + errorThrown + ")");
            setTimeout(waitForMsg, 15000); // Retry after 15 seconds
        }
    });
};

$(document).ready(function () {
    waitForMsg(); // Start the initial request
});
</script>
ログイン後にコピー

以上がロングポーリングはどのように機能し、Apache、PHP、JavaScript を使用して実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート