PHP リアルタイム通信機能の実装原理の分析
インターネットの急速な発展に伴い、リアルタイム通信は多くの Web サイトの基本要件になりました。そしてアプリケーション。リアルタイム通信により、チャット アプリケーション、複数人での共同編集、リアルタイム通知など、メッセージを瞬時に送受信できるため、ユーザー エクスペリエンスが大幅に向上します。この記事では、PHP におけるリアルタイム通信の原理を紹介し、対応するコード例を示します。
1. リアルタイム通信の実装原理
ロング ポーリングは、最も一般的でシンプルなリアルタイム通信方法です。コミュニケーション。これは HTTP 要求/応答モデルに基づいており、クライアントは HTTP 要求をサーバーに送信します。サーバーは要求に対する接続を開いたままにし、新しいメッセージが到着するとすぐに応答を返します。サーバーに新しいメッセージがない場合、サーバーは新しいメッセージが到着するか、タイムアウト期間に達するまで待機してから応答を返します。
ロング ポーリングを実装する PHP のコード例は次のとおりです。
// 客户端发送请求 function longPolling() { while (true) { $newMessage = getMessage(); // 从服务器获取新消息 if ($newMessage) { return $newMessage; // 有新消息时返回 } else { // 没有新消息时继续等待 usleep(1000000); // 休眠1秒钟 } } } // 服务器返回响应 function getMessage() { // 从数据库或其他数据源获取新消息的逻辑 // ... return $newMessage; }
上記のコードでは、クライアント関数 longPolling
が無限ループを通じてサーバーにリクエストを送信します。サーバー関数 getMessage
は、新しいメッセージを取得するために使用されます。新しいメッセージがある場合、関数 longPolling
はすぐに戻りますが、そうでない場合は待機し続けます。
WebSocket は HTML5 の新しい通信プロトコルです。双方向通信をサポートしており、クライアントとサーバーの間に永続的な接続を確立できます。新しい HTTP リクエストを開始します。 WebSocketはハンドシェイクのような方法で接続を確立し、接続が成功するとデータフレームを送信することでリアルタイム通信を行うことができます。
WebSocket を実装する PHP のコード例は次のとおりです。
// 服务器端代码 $server = new SwooleWebSocketServer("0.0.0.0", 9501); $server->on('open', function (SwooleWebSocketServer $server, $request) { echo "new connection: {$request->fd} "; }); $server->on('message', function (SwooleWebSocketServer $server, $frame) { $message = $frame->data; // 接收到的消息 // 处理消息的逻辑 // ... $server->push($frame->fd, $response); // 向客户端发送消息 }); $server->on('close', function ($ser, $fd) { echo "connection {$fd} closed "; }); $server->start();
上記のコードは、Swoole フレームワークを使用して WebSocket のサーバー側を実装します。接続が開かれるとコールバック関数 open
がトリガーされ、メッセージを受信するとコールバック関数 message
がトリガーされ、メッセージを処理して応答を送信できます。 ; close
コールバック関数は、接続が閉じられるとトリガーされます。
2. リアルタイム通信アプリケーション シナリオ
リアルタイム通信は、さまざまなアプリケーション シナリオで広く使用されており、一般的なリアルタイム通信アプリケーション シナリオのいくつかを次に示します:
概要:
この記事では、PHP におけるリアルタイム通信の原理を紹介し、ロング ポーリングと WebSocket という 2 つの具体的な実装方法を説明します。最新のアプリケーションではリアルタイム通信の重要性がますます高まっており、ユーザーに優れたエクスペリエンスを提供し、即時性のニーズに応えています。開発者は、特定のニーズに応じて適切なリアルタイム通信方法を選択し、対応する機能を実装できます。
以上がPHPリアルタイム通信機能の実装原理の分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。