最近、私は、パブリッシュ・サブスクライブと呼ばれる機能があり、関連のphp-のRedisの知識、について学び、Redisのは、パブリッシュ・サブスクライブ(パブ/サブ)メッセージを受信したメッセージ、加入者(サブ)を送信するために通信のメッセージングモード、送信者(パブ)です。
以下に直接PHPコード:
ノーマル - []送信者のパブ - pub.php
1 $のRedis = 新しい新規のRedis(); 2 $ Redisの - >接続( '127.0.0.1'、6379 ); 3。 $ Redisの - > AUTH( 'requirepass' ); 4 。5 $ RES = $ Redisの - >「(チャンネルを公開' DATE('はYmd H:I:S ' )); 6。 のvar_dump($ RES); //成功を返し、それ以外の戻り0
ノーマル - [サブ]加入者 - sub.php
1 $のRedis = 新しいRedisの(); 2 $ Redisのは - >( '127.0.0.1'、6379を接続)。 3つの $のRedis - >認証( 'requirepass' ); 4つの $のRedis - > setOptionを(Redisの:: OPT_READ_TIMEOUT、-1 ); 5 6 関数コールバック($ redisObj、$チャネル、$のMSG ){ 7つの エコー 'ChannelNameはです'。$チャンネル。 'メッセージがあります'。$のMSG 。// ChannelNameは、チャネルで、MSGは2019年7月17日午前9時53分55秒であり、 8 } 9 $ Redisの - >購読([ 'チャネル']、 'コールバック')。
この送信原理を理解し、一端を送信するためにサブスクライブすることができ、他端は直ちにメッセージを受信し、正確に、チャネル・サブスクリプション・チャネルの他端は直ちにメッセージを受信することができ、チャネルにチャネルを介してメッセージを送信することです。
[有効]キー設定 - pub.php
。1 $仕事 = '#通知'。DATE( 'YmdHis'を); 2 $ RES = $のRedis - > SETEX($仕事、10、 '待機' ); 。3 のvar_dump($ RES //戻り値ブール値(真の成功;) )、ブール値を返すことができなかった(偽)
鍵空間のニュースを[購読] - sub.php
。1 $ redisKey = '0 __keyevent @ __:期限切れ' ; //この形式が固定され、ライブラリーは0を表し、0使用デフォルトのRedisの最初のライブラリ 2 $のRedis - > psubscribe([ $ redisKey ]、 'コールバック' ); 3 関数 コールバック($ redisObj、$パターン、$チャンネル、$ MSG ){ 4。 エコー の$ MSG "\ R&LT \ N-" ; //#20,190,717,100,350を通知 5。 }
期限切れとしてキーが自動的に加入鍵空間メッセージのもう一方の端を開いて、メッセージを送信する際の原則とサブスクリプションを理解することができるこの送信は、ニュースを受け取ることができます。
特別な注意:サブスクリプションが実行ブロックされた後、事件が始まっているので、端末がサブスクリプションを掛けてきたのは死ぬために実用的であれば、このような状況でのみ、テスト開発を満たすことができ、我々は常に希望の守護者として実行背景で聴きたい、この時間を待つ必要があります同じプロセスがバックグラウンドで、Linuxシステムは、あなたがnohupコマンドを使用することができ、具体的な使用方法は続けました。