php think 通过Redis实现发布订阅功能
·
php think 通过Redis实现发布订阅功能
查看php think list 是否安装,没有composer安装一下
然后再command下面添加一个执行文件
可配置后台执行
/**
* redis 订阅
*/
class RedisSub extends Command
{
protected function configure()
{
// 指令配置
$this->setName('redissub')
->addOption('mode', 'm', Option::VALUE_OPTIONAL, 'daemon(守护进程)方式启动')
->setDescription('the redissub command');
}
protected function execute(Input $input, Output $output)
{
// 指令输出
$output->writeln('redissub:execute');
$redis = new RedisUtils();
$redis->setOption(RedisUtils::OPT_READ_TIMEOUT, -1);
$channels = Config::get("channels");
// Log::info('redis订阅中,等待消息消费');
$redis->subscribe($channels, function ($redis, $channel, $msg){
// 消费订阅消息的逻辑
//Log::info('消费channels:'.$channel.'===msg:'.json_encode($msg));
switch ($channel){
case 'cti_qc':
//语音质检
$services = app()->make(\app\common\service\QcService::class);
$services::ctiMessage($msg);
break;
case 'cdr':
// 话单处理
$services = app()->make(\app\common\service\QcService::class);
$services::cdrConsumer($msg);
break;
}
});
}
}
执行php think redissub
可配置守护进程后台执行
更多推荐


所有评论(0)