ロング ポーリングは、サーバーが明示的なリクエストを待たずにクライアントにデータを送信できるようにするために Web アプリケーションで使用されるポーリング手法です。ロング ポーリングの実装には、クライアントとサーバー間の永続的な接続の確立が含まれます。
ロング ポーリングのリクエストを処理するには、長いタイムアウトのリクエストを処理するように Apache を設定します。これは、Apache 構成で KeepAliveTimeout および MaxKeepAliveRequests ディレクティブを設定することで実現できます。
ロング ポーリングを実装する単純な PHP スクリプトは、次のように記述できます。
<?php while (true) { // Sleep for a random duration to simulate data availability sleep(rand(2, 10)); // Generate a random string to represent new data $data = "Message: " . rand(1, 10); // Send the data to the client echo $data; flush(); } ?>
クライアント側では、JavaScript を使用して PHP スクリプトへの永続的な接続を確立し、受信データを処理できます。これは、次の jQuery コードを使用して実現できます。
$(function() { function waitForMsg() { $.ajax({ url: "msgsrv.php", async: true, timeout: 50000, success: function(data) { // Append the received data to a DOM element $("#messages").append("<div>" + data + "</div>"); // Recursively call the waitForMsg function to continue polling waitForMsg(); }, error: function(XMLHttpRequest, textStatus, errorThrown) { // Handle the error and try again after a delay waitForMsg(); } }); } waitForMsg(); });
この例では、デモ目的でロング ポーリングの基本的な実装を提供します。堅牢でスケーラブルな実装を実現するには、Node.js や Spring Boot などのフレームワークの使用を検討してください。
以上がWeb アプリケーションでのロングポーリングはどのように機能しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。