現在の位置: ホーム> 最新記事一覧> PHPはRedisのメッセージサブスクリプションを継続的に聴き、サブスクリプションアクティビティを処理するのですか?

PHPはRedisのメッセージサブスクリプションを継続的に聴き、サブスクリプションアクティビティを処理するのですか?

gitbox 2025-06-06

序文

Redis(リモート辞書サーバー)は、豊富なデータ構造をサポートする高性能のメモリデータベースです。その中で、パブリッシュ/サブスクライブ(PUB/SUB)メカニズムを使用して、サービス間の非同期通信に使用できます。この記事では、PHP言語を使用してRedisチャネルでメッセージを継続的に聴き、これらのサブスクリプションイベントをリアルタイムで処理する方法について説明します。

Redisの公開/購読メカニズムの簡単な説明

Redisのパブリッシュ/サブスクライブモードを使用すると、クライアントは1つ以上のチャネルを購読できます。メッセージが公開されると、すべてのクライアントがチャンネルを購読すると、すぐにメッセージコンテンツが受信されます。このメカニズムは、メッセージブロードキャスト、リアルタイム通知、システムイベントなどのシナリオでよく使用されます。

PHPを使用してRedisサブスクリプションチャネルを聴く方法

PHPでRedisメッセージリスニングを実装するには、 PHP-Redis拡張機能をインストールする必要があります。インストール方法は次のとおりです。

 sudo apt-get install php-redis

PHPの古いバージョンの場合、手動でインストールできます。

ステップ1:Redis拡張機能をダウンロードして解凍します

wget https://pecl.php.net/get/redis-5.3.4.tgz
tar -xzf redis-5.3.4.tgz

ステップ2:拡張機能をコンパイルしてインストールします

cd redis-5.3.4
phpize
./configure
make
sudo make install

次に、 php.iniに拡張構成を追加します。

 extension=redis.so

ステップ3:Redis接続を作成し、チャンネルを聴く

次のコードは、Redisに接続し、PHPを使用してチャネルに購読する方法を示しています。

 $redis = new Redis();
$redis->pconnect('127.0.0.1', 6379);
$redis->subscribe(['CHANNEL_NAME'], function ($redis, $channel, $msg) {
    echo $channel . ": " . $msg . "\n";
});

上記のコードでは、 subscribe()メソッドを使用してチャネルをサブスクライブします。メッセージを受信した後、コールバック関数が自動的に実行され、メッセージのリアルタイム処理が実現します。

Redisサブスクリプションイベントを処理するためのコールバックロジック

サブスクリプションメッセージを処理する方法はカスタマイズできます。これが単純なメッセージ処理関数です:

 function handleMessage($redis, $channel, $message)
{
    // 受信したメッセージを処理します
    echo "Received $message from channel $channel\n";
}

カスタム関数を使用してチャネルを購読します。

 $redis = new Redis();
$redis->pconnect('127.0.0.1', 6379);
$redis->subscribe(['CHANNEL_NAME'], 'handleMessage');

このコードは、コールバック関数を定義することにより、購読されたメッセージコンテンツを処理し、出力を印刷します。また、データベースの作成、他のサービスのトリガーなど、ビジネスロジックに基づいてより多くの操作を実行することもできます。

要約します

効率的なイベント通知とメッセージブロードキャストメカニズムは、Redisの公開/購読メッセージを聴くことでPHPを通じて達成できます。この記事では、インストール拡張機能からリスニングロジックの作成までの完全なプロセスを紹介します。開発者は、リアルタイムのメッセージ処理を実現するために、独自のプロジェクトに従ってサブスクリプションコールバック機能を柔軟に拡張できます。