我正在遵循Laravel office Redis指南,但我遇到了一些问题https://laravel.com/docs/5.2/redis#pubsub
创建命令后,当我在控制台中运行“-> php artisan redis:subscribe”时,我得到以下错误
[Symfony\Component\Console\Exception\CommandNotFoundException]
There are no commands defined in the "redis" namespace.
我不能听Redis Chanel的歌。
Redis发布通道方法工作正常。来检查这个。在控制台中,我输入"-> redis-cli“,然后在刷新浏览器中输入"subscribe mychannel”,我在控制台中获取发布数据。
我无法通过Laravel订阅。
我也试过使用通配符
Route::get('/subscribe', function()
{
Redis::psubscribe(['*'], function($message, $channel) {
echo $message;
});
});
但是浏览器一直在加载,我没有得到任何数据。我还尝试在控制器中创建一个方法。
public function subscribeChannel()
{
$redis = Redis::Connection();
$redis->subscribe(['channel'], function($message) {
echo $message;
});
}
这个subscribeChannel方法给出了以下错误
ErrorException in StreamConnection.php line 390:
strlen() expects parameter 1 to be string, array given
我在config/database.php中的配置如下
'redis' => [
'cluster' => false,
'default' => [
'host' => env('REDIS_HOST', 'localhost'),
'password' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_PORT', 6379),
'database' => 0,
'read_write_timeout' => 0
],
],
寻求帮助谢谢
发布于 2017-11-08 09:09:29
Redis::connection & then subscribe不适用于Laravel 5.2。
您可以使用以下命令来执行相同的操作:
Redis::subscribe(['user_online_offline'], function ($message) {
echo $message;
});
如果你想使用另一个相同的连接,你可以使用下面的命令:
Redis::subscribe(['user_online_offline'], function ($message) {
echo $message;
}, $connection = 'socket');
https://stackoverflow.com/questions/40529492
复制相似问题