【发布时间】:2019-11-03 03:17:01
【问题描述】:
我在 Laravel 5.7 中有一个名为 RedisSubscribe.php 的命令类。 我希望能够订阅“消息通道”,对消息做一些事情,然后使用 redis 将消息发布到“测试通道”。 一切都很好,直到我必须发布到测试频道。 Redis 当然只能订阅或发布,不能两者都做,因此我收到此错误消息:“ERR only (P)SUBSCRIBE / (P)UNSUBSCRIBE / PING / QUIT allowed in this context”。
所以我知道在 node.js 中,您可以通过使用以下代码创建两个单独的 ioredis 实例轻松地做到这一点
var Redis = require('ioredis');
var subscriber = new Redis();
var publisher = new Redis();
我如何在 PHP 中做一些等效的事情?
我的代码目前看起来像这样
public function handle()
{
Redis::subscribe(['message-channel'], function ($message){
Redis::connection('my-connection');
Redis::publish('test-channel', $message);
});
}
}
显然,我没有正确使用 Redis::connection,因为我仍然收到相同的错误消息。
数据库文件中的'my-connection'如下所示:
'my-connection' => [
'host' => env('REDIS_HOST', '127.0.0.1'),
'password' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_PORT', 6379),
'database' => env('REDIS_DB', 0),
],
【问题讨论】: