2016-11-10 114 views
0

我下面Laravel办公室Redis的指导,但我有一些问题 https://laravel.com/docs/5.2/redis#pubsub无法订阅Redis的通道Laravel 5.2

当我运行在创建命令后 - :控制台“> PHP工匠Redis的订阅”我得到以下错误

[Symfony\Component\Console\Exception\CommandNotFoundException] 
    There are no commands defined in the "redis" namespace. 

我无法听Redis Chanel。

Redis Publish Channel方法工作正常。检查这一点。 在控制台中,我输入“ - > redis-cli”,然后“订阅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 

我在配置/ 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 
     ], 
    ], 

寻找帮助 谢谢

回答

0

Redis :: connection &然后订阅不适用于Laravel 5.2。

您可以为同一使用下面的命令:

Redis::subscribe(['user_online_offline'], function ($message) { 
     echo $message; 
}); 

如果你要使用同一以下命令,然后就可以使用其他连接:

Redis::subscribe(['user_online_offline'], function ($message) { 
    echo $message; 
}, $connection = 'socket');