Redis メッセージ サブスクリプションを継続的にリッスンし、PHP で電子メール通知を送信するにはどうすればよいですか?
要約:
リアルタイム アプリケーションでは、メッセージ通知が一般的な要件です。この記事では、PHP と Redis を使用してメッセージのパブリッシュおよびサブスクライブ メカニズムを実装し、メッセージの受信時に通知する電子メールを送信する方法を紹介します。 PHP の swoole 拡張ライブラリを使用して長い接続を実装します。この機能を実現するには、Redis メッセージ サブスクリプションをリッスンすることが鍵となります。
インストールの依存関係
コードを書き始める前に、まず swoole 拡張ライブラリと Redis 拡張ライブラリをインストールする必要があります。 Linux システムを使用している場合は、次のコマンドを使用してインストールできます。
pecl install swoole pecl install redis
Windows システムを使用している場合は、PECL 公式 Web サイトから対応するライブラリ ファイルをダウンロードしてインストールできます。
<?php require 'vendor/autoload.php'; use SwooleCoroutine; use SwooleCoroutineRedis; $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); } });
コードでは、最初に次のコードが必要です。 swoole と Redis 関連のクラスを紹介します。次に、Redis サーバーに接続するための Redis インスタンスを作成します。
次に、$redis->subscribe メソッドを使用して、1 つ以上のチャネルをリッスンします。メッセージを受信したら、sendEmail 関数を呼び出して電子メール通知を送信します。 sendEmail 関数の特定の実装では、お気に入りの電子メール送信ライブラリを使用できます。
最後に、swoole の Coroutine::create を使用して、Redis サーバーに継続的に ping を送信して、長時間の接続をアクティブに保つコルーチンを作成します。
スクリプトの実行
notify.php スクリプトを保存して実行します。引き続き Redis メッセージ サブスクリプションをリッスンし、メッセージを受信すると電子メール通知を送信します。
php notify.php
概要:
PHP の swoole 拡張ライブラリを使用すると、Redis メッセージ サブスクリプションのリッスンと電子メール通知の送信機能を簡単に実装できます。このリアルタイム通知メカニズムは、リアルタイム チャット、リアルタイム データ更新など、多くのアプリケーション シナリオで非常に役立ちます。 Redis のパブリッシュおよびサブスクライブ メカニズムを合理的に利用し、PHP のコルーチン機能と組み合わせることで、効率的でリアルタイムのメッセージ通知システムを実装できます。
以上がRedis メッセージ サブスクリプションの継続的な監視を実装し、PHP で電子メール通知を送信するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。