由于predis处于订阅者模式(Laravel),因此无法发布

时间:2019-11-03 03:17:01

标签: laravel redis predis

我在Laravel 5.7中有一个名为RedisSubscribe.php的命令类。 我希望能够订阅“消息通道”,对消息进行一些处理,然后使用Redis将消息发布到“测试通道”。 一切正常,直到我必须发布到测试频道。 Redis当然只能订阅或发布,不能两者都做,因此我收到此错误消息:“在这种情况下,仅允许(P)SUBSCRIBE /(P)UNSUBSCRIBE / PING / QUIT ERR”。

所以我知道在node.js中,您可以通过使用以下代码创建两个独立的ioredis实例来轻松实现此目的

surf2Dwrite(pixel, surf, x * 16, y);

如何在PHP中做等效的事情?

我的代码当前看起来像这样

var Redis = require('ioredis');
var subscriber = new Redis();
var publisher = new Redis();

显然,我没有正确使用Redis :: connection,因为我仍然收到相同的错误消息。

数据库文件中的

“我的连接”看起来像这样:

public function handle()
    {
        Redis::subscribe(['message-channel'], function ($message){
            Redis::connection('my-connection');
            Redis::publish('test-channel', $message);
        });
    }
}

1 个答案:

答案 0 :(得分:0)

您可以使用此代码创建另一个redis实例并在Laravel中发布消息

$redis = Redis::connection('my-connection');
$redis->publish('example-channel', $data);