ホームページ > バックエンド開発 > PHPチュートリアル > ロングポーリングにより、ページを定期的に更新せずに Web アプリケーションをどのように効率的に更新できるのでしょうか?

ロングポーリングにより、ページを定期的に更新せずに Web アプリケーションをどのように効率的に更新できるのでしょうか?

Mary-Kate Olsen
リリース: 2024-12-25 11:47:42
オリジナル
833 人が閲覧しました

How Does Long Polling Efficiently Update Web Applications Without Constant Page Refreshing?

ロング ポーリングについて: 初心者ガイド

ロング ポーリングは、Web アプリケーションがページを常に更新せずに、サーバーからの新しいデータを効率的に待機できるようにする手法です。これは、チャットやソーシャル ネットワーキング アプリケーションなど、データが頻繁に更新されないアプリケーションに特に役立ちます。

PHP および JavaScript での基本的なロング ポーリングの実装

ロング ポーリングは、複雑に見えますが、その実装は驚くほど簡単です。 PHP と JavaScript を使用した基本的な例を見てみましょう。

PHP スクリプト (msgsrv.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));
?>
ログイン後にコピー

このスクリプトは、単純なメッセージ サーバーをシミュレートします。乱数を生成し、実際の状況を模倣するために 2 ~ 10 秒のランダムな遅延を伴って応答として送信します。

JavaScript コード (long_poller.htm)

<html>
<head>
    <script src="jquery.min.js"></script>
    <script>
        function addmsg(type, msg) {
            $("#messages").append("<div class='msg " + type + "'>" + msg + "</div>");
        }

        function waitForMsg() {
            $.ajax({
                url: "msgsrv.php",
                success: function (data) {
                    addmsg("new", data);
                    setTimeout(waitForMsg, 1000);
                },
                error: function () {
                    addmsg("error", "Error");
                    setTimeout(waitForMsg, 15000);
                }
            });
        }

        $(document).ready(function () {
            waitForMsg();
        });
    </script>
</head>
<body>
    <div>
ログイン後にコピー

この JavaScript コードは、jQuery を使用して PHP スクリプトを非同期的にリクエストします。リクエストが成功すると、レスポンスが #messages div に追加されます。リクエストが失敗した場合は、エラーが表示され、15 秒後に再試行されます。 setTimeout 関数は、ブラウザが一定の間隔でスクリプトを要求することを保証し、ロング ポーリングを実装します。

説明

この例では、ロング ポーリングの簡略化された実装を示します。 PHP スクリプトは、不定期にデータを送信するサーバーをシミュレートします。 JavaScript コードは、AJAX を使用してスクリプトを繰り返しリクエストし、応答を待ちます。応答を受信すると、JavaScript コードが UI を更新します。応答がない場合、スクリプトは少し待ってから再試行します。このアプローチにより、サーバー側の更新を効率的に待機しながら、Web アプリケーションの応答性を維持できます。

以上がロングポーリングにより、ページを定期的に更新せずに Web アプリケーションをどのように効率的に更新できるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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