У меня есть класс команд под названием RedisSubscribe.php в Laravel 5.7. Я хочу иметь возможность подписаться на 'message-channel', сделать что-то с сообщением и затем опубликовать сообщение, используя redis для 'test-channel'. Все хорошо, пока я не опубликую на тестовом канале. Redis, конечно, может только подписываться или публиковаться, но не делать и то, и другое, и в результате я получаю следующее сообщение об ошибке: «Только ERR (P) ПОДПИСАТЬСЯ / (P) НЕ ПОДПИСАТЬСЯ / PING / QUIT разрешено в этом контексте».
Итак, я знаю, что в 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),
],