最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

swoole如何监听redis数据

来源:动视网 责编:小采 时间:2020-11-03 13:38:56
文档

swoole如何监听redis数据

swoole如何监听redis数据:swoole如何监听redis数据?Laravel使用swoole监听redis开始之前,请先确保redis已经正确安装,并正常运行。Laravel代码在App\Events目录下新建RedisTest事件<php namespace App\Events; use Illuminate\Broadcast
推荐度:
导读swoole如何监听redis数据:swoole如何监听redis数据?Laravel使用swoole监听redis开始之前,请先确保redis已经正确安装,并正常运行。Laravel代码在App\Events目录下新建RedisTest事件<php namespace App\Events; use Illuminate\Broadcast


swoole如何监听redis数据?

Laravel使用swoole监听redis

开始之前,请先确保redis已经正确安装,并正常运行。

Laravel代码

在AppEvents目录下新建RedisTest事件

<?php
namespace AppEvents;
use IlluminateBroadcastingChannel;
use IlluminateQueueSerializesModels;
use IlluminateBroadcastingPrivateChannel;
use IlluminateBroadcastingPresenceChannel;
use IlluminateFoundationEventsDispatchable;
use IlluminateBroadcastingInteractsWithSockets;
use IlluminateContractsBroadcastingShouldBroadcast;
class RedisTest
{
 use Dispatchable, InteractsWithSockets, SerializesModels;
 public $message;
 /**
 * Create a new event instance.
 *
 * @return void
 */
 public function __construct($message)
 {
 $this->message = $message;
 }
 /**
 * Get the channels the event should broadcast on.
 *
 * @return IlluminateBroadcastingChannel|array
 */
 public function broadcastOn()
 {
 return new PrivateChannel('channel-name');
 }
}

AppListenersRedisTestListener 监听事件代码

<?php
namespace AppListeners;
use AppEventsRedisTest;
use IlluminateQueueInteractsWithQueue;
use IlluminateContractsQueueShouldQueue;
use IlluminateSupportFacadesLog;
class RedisTestListener
{
 /**
 * Create the event listener.
 *
 * @return void
 */
 public function __construct()
 {
 //
 }
 /**
 * Handle the event.
 *
 * @param RedisTest $event
 * @return void
 */
 public function handle(RedisTest $event)
 {
 $message = $event->message;
 Log::info('the message received from subscribed redis channel msg_0: '.$message);
 }
}

AppProvidersEventServiceProvider 登记事件/监听关系

protected $listen = [
 'AppEventsRedisTest' => [
 'AppListenersRedisTestListener',
 ],
 ];

监听命令

AppConsoleCommandsRedisSubscribe 代码如下

<?php
namespace AppConsoleCommands;
use IlluminateConsoleCommand;
use swoole_redis;
use IlluminateSupportFacadesEvent;
use AppEventsRedisTest;
class RedisSubscribe extends Command
{
 /**
 * The name and signature of the console command.
 *
 * @var string
 */
 protected $signature = 'redis:subscribe';
 /**
 * The console command description.
 *
 * @var string
 */
 protected $description = 'deamon process to subscribe redis broadcast';
 /**
 * Create a new command instance.
 *
 * @return void
 */
 public function __construct()
 {
 parent::__construct();
 }
 /**
 * Execute the console command.
 *
 * @return mixed
 */
 public function handle()
 {
 $client = new swoole_redis;
 $client->on('message', function (swoole_redis $client, $result) {
 var_dump($result);
 static $more = false;
 if (!$more and $result[0] == 'message')
 {
 echo "trigger Event RedisTest
";
 Event::fire(new RedisTest($result[2]));
 }
 });
 $client->connect('127.0.0.1', 6379, function (swoole_redis $client, $result) {
 echo "connect
";
 $client->subscribe('msg_0');
 });
 }
}

Laravel部分代码完成

==================================

supervisor 管理进程

在 /etc/supervisor/conf.d 文件夹下新建 echo.conf , 代码如下

[group:echos]
programs=echo-queue,echo-redis
[program:echo-queue]
command=php artisan queue:work
directory=/home/bella/Downloads/lnmp/echo1.0/echo
user=bella
autorestart=true
redirect_stderr=true
stdout_logfile=/home/bella/Downloads/lnmp/echo1.0/echo/storage/logs/queue.log
loglevel=info
[program:echo-redis]
command=php artisan redis:subscribe
directory=/home/bella/Downloads/lnmp/echo1.0/echo
user=bella
autorestart=true
redirect_stderr=true
stdout_logfile=/home/bella/Downloads/lnmp/echo1.0/echo/storage/logs/redis.log
loglevel=info

完成后,执行以下命令重载

supervisorctl reload

=================================

进入redis 客户端,发布一个广播通知到 msg_0 频道

publish msg_0 "Hello Bella"

如果 laravel目录下的 storagelogslaravel.log 最后的日志中记录了广播发送的通知,则redis监听功能实现

文档

swoole如何监听redis数据

swoole如何监听redis数据:swoole如何监听redis数据?Laravel使用swoole监听redis开始之前,请先确保redis已经正确安装,并正常运行。Laravel代码在App\Events目录下新建RedisTest事件<php namespace App\Events; use Illuminate\Broadcast
推荐度:
标签: 数据 redis swoole
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top