インターネット技術の継続的な発展に伴い、リアルタイムのメッセージプッシュの重要性がますます高まっています。多くのアプリケーション シナリオでは、リアルタイム メッセージ プッシュによってユーザー エクスペリエンスと効率が大幅に向上します。たとえば、ソーシャル アプリケーションでは、友人のメッセージをリアルタイムにプッシュすることで、ユーザーは友人の最新情報をより迅速に理解できるようになります。オンライン ゲームでは、ゲーム イベントをリアルタイムにプッシュすることで、ユーザーはよりスムーズにゲームをプレイできるようになります。株式取引では、 、株価のリアルタイムの押し上げ変化により、トレーダーはよりタイムリーな意思決定を行うことができます。
リアルタイム メッセージ プッシュを実装するにはさまざまな方法がありますが、より一般的な方法の 1 つは、PHP と ZMQ (ZeroMQ) を使用することです。
ZMQ は、リクエスト/レスポンス、パブリッシュ/サブスクライブ、プッシュ/プルなどのさまざまなメッセージング モードを提供する、高性能の非同期メッセージング ライブラリです。 PHP で ZMQ を使用すると、リアルタイムのメッセージ プッシュを簡単に実装できます。
リアルタイム メッセージ プッシュの簡単な例を見てみましょう。
まず、ZMQ コンテキストを作成する必要があります:
$context = new ZMQContext();
次に、Push タイプの ZMQ ソケットを作成します:
$push_socket = $context->getSocket(ZMQ::SOCKET_PUSH); $push_socket->bind("tcp://127.0.0.1:5555");
ここで、Push ソケットを作成します。単語は次のようにバインドされています。ローカル ポート 5555 は、クライアントにメッセージを送信するために使用されます。
次に、プル タイプの ZMQ ソケットを作成します。
$pull_socket = $context->getSocket(ZMQ::SOCKET_PULL); $pull_socket->bind("tcp://127.0.0.1:5556");
ここでは、クライアントからのサブスクリプション リクエストを受信するために、プル ソケットをローカル 5556 ポートにバインドします。
次に、クライアントにメッセージを送信するための PHP スクリプトを作成します。
while (true) { $msg = date("Y-m-d H:i:s") . " hello world!"; $push_socket->send($msg); sleep(1); }
ここでは、無限ループを使用して、1 秒に 1 回、プッシュ ソケットにメッセージを継続的に送信します。
最後に、クライアントからサブスクリプション リクエストを受信し、メッセージをサブスクライバーにプッシュするための PHP スクリプトを作成します。
while (true) { $msg = $pull_socket->recv(); foreach ($clients as $client) { $client->send($msg); } }
ここでも、無限ループを使用してクライアントのサブスクリプション リクエストを待機します。 、すべての購読者にメッセージを送信します。
クライアントがメッセージをサブスクライブする必要がある場合、プル ソケットにバインドされたポートに接続し、サブスクリプション情報を含むメッセージを送信するだけで済みます。
$context = new ZMQContext(); $sub_socket = $context->getSocket(ZMQ::SOCKET_SUB); $sub_socket->connect("tcp://127.0.0.1:5556"); $sub_socket->setSockOpt(ZMQ::SOCKOPT_SUBSCRIBE, "");
ここで、 Subscribe タイプの ZMQ ソケットはローカル ポート 5556 に接続されます。次に、setSockOpt() 関数を使用してソケット オプションを設定し、すべてのメッセージをサブスクライブします。
最後に、簡単な PHP ページを作成し、JavaScript を使用して、リアルタイム メッセージ プッシュの効果を実現できます。ここでは、開発に jQuery ライブラリを使用します。
<!DOCTYPE html> <html> <head> <title>实时消息推送</title> <script src="https://code.jquery.com/jquery-3.1.0.min.js"></script> <script> $(function() { var socket = new WebSocket("ws://127.0.0.1:8080"); socket.onmessage = function(event) { $("#messages").append("<li>" + event.data + "</li>"); } }); </script> </head> <body> <h1>实时消息推送</h1> <ul id="messages"></ul> </body> </html>
ここでは、ローカル 8080 ポートに接続する WebSocket を作成し、サーバーからのメッセージをリッスンし、ページにメッセージを表示します。
まとめると、PHP と ZMQ を使用すると、非常に便利にリアルタイムのメッセージ プッシュを実現できます。もちろん、安全性や信頼性など、実用化に向けて考慮すべき課題は数多くあります。ただし、この記事では参考用の基本的なフレームワークを提供します。
以上がPHP と ZMQ を使用したリアルタイム メッセージ プッシュの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。