无法订阅Redis Channel Laravel 5.2

时间:2016-11-10 14:02:28

标签: php laravel redis laravel-5.2 phpredis

我正在关注Laravel办公室Redis指南,但我遇到了一些问题 https://laravel.com/docs/5.2/redis#pubsub

在我运行时创建命令" - > php artisan 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

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

寻求帮助 感谢

1 个答案:

答案 0 :(得分:0)

Redis ::连接&订阅不适用于Laravel 5.2。

您可以使用以下命令:

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

如果要使用其他连接,则可以使用以下命令:

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