PHP はどのようにして Redis メッセージ サブスクリプションを継続的にリッスンし、プッシュ通知を送信するのでしょうか?
インターネットの急速な発展に伴い、リアルタイム通知は多くのアプリケーションにとって必要な機能になりました。高性能の Key-Value ストレージ データベースとして、Redis のパブリッシュおよびサブスクライブ機能は、この需要に十分対応できます。この記事では、PHP を使用して Redis メッセージを継続的に監視し、プッシュ通知を通じてユーザーにメッセージを送信する方法を紹介します。
始める前に、Redis 拡張機能がインストールされていることを確認する必要があります。次のコマンドでインストールできます:
pecl install redis
まず、Redis サーバーに接続する必要があります。 Redis
クラスを使用してサーバーに接続し、Redis::connect
メソッドを使用してホストとポートを指定します。ここの例では、localhost とデフォルトのポート 6379 を使用しています。
$redis = new Redis(); $redis->connect('127.0.0.1', 6379);
次に、Redis::subscribe
を使用してサブスクライブできます。メソッド 1 つ以上のチャネルからのメッセージ。このメソッドは、サブスクライブするすべてのチャネルの名前を含む配列をパラメーターとして受け取ります。 notifications
という名前のチャネルに登録する例を次に示します。
$redis->subscribe(['notifications'], function ($redis, $channel, $message) { // 在这里处理收到的消息 });
上記のコールバック関数では、受信したメッセージをビジネス ニーズに応じて処理できます。たとえば、プッシュ通知をユーザーに送信できます。
プッシュ通知を送信するには、さまざまなサードパーティのプッシュ サービス (FCM や APN など) を使用するか、次のようなテクノロジーを直接使用できます。ウェブソケット。ここでは、例として FCM (Firebase Cloud Messaging) を使用してプッシュ通知を送信します。
Firebase Admin SDK がインストールされていることを確認してください。 Composer 経由でインストールできます:
composer require kreait/firebase-tokens composer require kreait/firebase-admin
まず、必要なクラスをインポートし、Firebase Admin SDK を初期化します:
use KreaitFirebaseFactory; use KreaitFirebaseMessagingCloudMessage; use KreaitFirebaseMessagingNotification; $factory = (new Factory)->withServiceAccount('/path/to/serviceAccountKey.json'); $messaging = $factory->createMessaging();
次に、メッセージを受信した後、プッシュを送信するコードを作成できます。 notification:
$redis->subscribe(['notifications'], function ($redis, $channel, $message) use ($messaging) { // 处理收到的消息 // 构建推送通知 $notification = Notification::create('标题', '内容'); // 构建消息 $message = CloudMessage::fromArray([ 'token' => '设备的推送令牌', 'notification' => $notification, ]); // 发送推送通知 $messaging->send($message); });
上記の例では、デバイス の
プッシュ トークンを実際のデバイスのプッシュ トークンに置き換える必要があります。これは、FCM のドキュメントを参照して取得できます。またはAPN。
最後に、Redis::subscribe
メソッドを呼び出して監視を開始します。
$redis->subscribe(['notifications'], function ($redis, $channel, $message) use ($messaging) { // 处理收到的消息 // 构建推送通知 $notification = Notification::create('标题', '内容'); // 构建消息 $message = CloudMessage::fromArray([ 'token' => '设备的推送令牌', 'notification' => $notification, ]); // 发送推送通知 $messaging->send($message); });
上記のコードは、続行 Redis サーバーをリッスンします。新しいメッセージが notifications
チャネルにパブリッシュされると、通知が受信され、プッシュ通知がユーザーに送信されます。
概要
この記事では、PHP を使用して Redis メッセージを継続的に監視し、プッシュ通知を通じてユーザーにメッセージを送信する方法を紹介します。 Redisのパブリッシュ・サブスクライブ機能を利用することで、リアルタイム通知機能を実現し、ユーザーエクスペリエンスを向上させることができます。同時に、サードパーティのプッシュサービスと組み合わせて、メッセージのプッシュ通知機能を簡単に実装できます。この記事が皆さんのお役に立てば幸いです。
以上がPHP はどのようにして Redis メッセージ サブスクリプションを継続的にリッスンし、プッシュ通知を送信できるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。