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

Apache と PHP を使用して単純なロングポーリングを実装するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-31 02:16:09417ブラウズ

How to Implement Simple Long Polling Using Apache and PHP?

単純なロング ポーリングの実装

多くのリソースでロング ポーリングの概念が説明されていますが、実際の実装例は依然としてわかりにくいです。複雑なフレームワークやサーバー構成に依存しない、簡素化されたバージョンを詳しく見てみましょう。

サーバー通信に Apache と PHP を使用する

サーバー リクエストを処理するには、Apache で十分です。以下の PHP スクリプトは、ランダムな間隔の後にランダムな文字列を送信し、リアルタイムのメッセージ到着をシミュレートします。場合によっては、デモンストレーションの目的でエラーが返されることがあります。

<?php
if (rand(1, 3) == 1) {
    header("HTTP/1.0 404 Not Found");
    die();
}
sleep(rand(2, 10));
echo("Hi! Have a random number: " . rand(1, 10));
?>

ロング ポーリング用の JavaScript クライアント

JavaScript では、ロング ポーラーは上記のスクリプトを継続的にリクエストし、待機します。応答:

<script type="text/javascript">
function waitForMsg() {
    $.ajax({
        type: "GET",
        url: "msgsrv.php",

        success: function(data) {
            // Display the message
            $("#messages").append("<div class='msg new'>" + data + "</div>");

            // Recursively invoke waitForMsg
            setTimeout(waitForMsg, 1000);
        },
        error: function() {
            // Display the error message and restart the process after 15 seconds
            $("#messages").append("<div class='msg error'>Error encountered</div>");
            setTimeout(waitForMsg, 15000);
        }
    });
}

$(document).ready(function() {
    waitForMsg();
});
</script>

このスクリプトはサーバーの更新を継続的にチェックし、受信したものを表示しますメッセージ。エラー処理が組み込まれており、ロング ポーラーは指定されたタイムアウト期間後に再接続を試行します。

ロング ポーリングの強み

ロング ポーラーにはいくつかの利点があります。

  • 復元力: インターネット接続が失われた場合、クライアントは自動的に回復して再接続できます。
  • スケーラビリティ: スタンドアロン サーバーは、Web サイトのパフォーマンスに影響を与えることなく、複数の同時ロング ポーリング リクエストを処理できます。
  • シンプルさ:コードは、サーバー側とクライアント側の両方で単純で実装が簡単です。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。