ホームページ > バックエンド開発 > PHPチュートリアル > PHP と ZMQ を使用したリアルタイム メッセージ プッシュ

PHP と ZMQ を使用したリアルタイム メッセージ プッシュ

王林
リリース: 2023-06-28 08:44:02
オリジナル
1095 人が閲覧しました

インターネット技術の継続的な発展に伴い、リアルタイムのメッセージプッシュの重要性がますます高まっています。多くのアプリケーション シナリオでは、リアルタイム メッセージ プッシュによってユーザー エクスペリエンスと効率が大幅に向上します。たとえば、ソーシャル アプリケーションでは、友人のメッセージをリアルタイムにプッシュすることで、ユーザーは友人の最新情報をより迅速に理解できるようになります。オンライン ゲームでは、ゲーム イベントをリアルタイムにプッシュすることで、ユーザーはよりスムーズにゲームをプレイできるようになります。株式取引では、 、株価のリアルタイムの押し上げ変化により、トレーダーはよりタイムリーな意思決定を行うことができます。

リアルタイム メッセージ プッシュを実装するにはさまざまな方法がありますが、より一般的な方法の 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 サイトの他の関連記事を参照してください。

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