現在の位置: ホーム> 最新記事一覧> PHP での Redis メッセージ サブスクリプションのリアルタイム監視と電子メール通知の実装に関する完全なチュートリアル

PHP での Redis メッセージ サブスクリプションのリアルタイム監視と電子メール通知の実装に関する完全なチュートリアル

M66 2025-10-28

PHP で Redis メッセージのサブスクリプションと電子メール通知を実装するためのアイデア

最新のリアルタイム アプリケーションでは、メッセージ通知機能が不可欠なコンポーネントになっています。 Redis が提供するパブリッシュおよびサブスクライブ メカニズム (Pub/Sub) を使用すると、サーバーとクライアントはリアルタイムでメッセージを操作できます。 PHP の Swoole コルーチン拡張機能を組み合わせることで、高性能で継続的な監視メッセージ処理および電子メール通知システムを実現できます。

必要な依存関係をインストールする

コードを記述する前に、Swoole 拡張機能と Redis 拡張機能が環境にインストールされていることを確認する必要があります。 Linux システムは、次のコマンドを使用してインストールできます。

 pecl install swoole
pecl install redis

Windows システムを使用している場合は、PECL 公式 Web サイトにアクセスして、対応する DLL 拡張ファイルを手動でダウンロードしてインストールできます。

PHPリスニングスクリプトを作成する

Redis メッセージ サブスクリプションを継続的に監視し、電子メール送信をトリガーするために、 notify.phpという名前のスクリプト ファイルを作成します。コード例は次のとおりです。

 <?php
require 'vendor/autoload.php';
use Swoole\Coroutine;
use Swoole\Coroutine\Redis;

$redis = new Redis();
$redis->connect('127.0.0.1', 6379);

$redis->subscribe(['channel'], function ($redis, $channel, $message) {
    // メッセージ受信後に電子メール通知を送信する
    sendEmail($message);
});

Coroutine::create(function () use ($redis) {
    $redis->subscribe(['channel'], function ($redis, $channel, $message) {
        // メッセージ受信後に電子メール通知を送信する
        sendEmail($message);
    });
});

function sendEmail($message) {
    // メール送信ライブラリを使用してメールを送信する
    // code...
}

Coroutine::create(function () use ($redis) {
    while (true) {
        $redis->ping();
        Coroutine::sleep(5);
    }
});

上記のコードでは、まず Redis クライアントをインスタンス化し、Redis サーバーに接続します。 subscribeメソッドを使用して、指定されたチャンネルに登録します。新しいメッセージが監視されると、コールバック関数がトリガーされ、 sendEmail()関数が呼び出されて電子メール通知が送信されます。この機能は、プロジェクトのニーズに応じて、任意のメール送信ライブラリ (PHPMailer、SwiftMailer など) を統合できます。

さらに、Swoole コルーチンを使用すると、プログラムがバックグラウンドでアクティブな状態を維持し、定期的に Redis サーバーと通信して、接続が切断されるのを防ぐことができます。

リスニングスクリプトを実行する

上記のコードを保存した後、コマンド ラインで次のコマンドを実行して監視を開始します。

 php notify.php

このスクリプトは実行を続け、Redis チャネルでメッセージの変更を監視し続け、新しいメッセージを受信すると電子メール通知を自動的に送信します。

要約する

PHP の Swoole コルーチンを Redis のパブリッシュおよびサブスクライブ メカニズムと組み合わせることで、リアルタイムのメッセージ監視および電子メール通知システムを効率的に実装できます。このアーキテクチャは、リアルタイム チャット システム、システム警告通知、データ変更プッシュなどのアプリケーション シナリオに特に適しています。非同期タスクの処理ロジックが簡素化されるだけでなく、システムの同時実行パフォーマンスと応答速度も大幅に向上します。