function redis_command($key,$key_arr)
{
return \Illuminate\Support\Facades\Redis::connection('default')->command($key,$key_arr);
}
2.仓库类
<?php
namespace App\Repository\Redis;
use Illuminate\Support\Facades\Redis;
class ChatPubSubRedisRepository
{
private $channel;
public function __construct()
{
$this->channel = config('app.env_config.redis_key').'ChatPubSubRedisRepository';
}
public function pub($str)
{
return redis_command('PUBLISH',[$this->channel,$str]);
}
public function sub()
{
Redis::connection('default')->psubscribe($this->channel,function ($list){
log_info($list);
});
}
}
3.自定义artisan
1.执行命令生成artisan
php artisan make:command Chat --command=chat:subscribe
<?php
namespace App\Console\Commands;
use App\Http\Controllers\TestController;
use App\Repository\Redis\ChatPubSubRedisRepository;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Redis;
class Chat extends Command
{
protected $signature = 'chat:subscribe';
protected $description = 'Command description';
public function __construct()
{
parent::__construct();
}
public function handle()
{
$sub = new ChatPubSubRedisRepository();
$sub->sub();
}
}
4.supervisord进程监听
[program:dior-chat-subscribe]
process_name=%(program_name)s_%(process_num)02d
command=php 项目目录/artisan chat:subscribe
autostart=true
autorestart=true
user=root
numprocs=1
redirect_stderr=true