0

我正在关注 Laravel 办公室 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”,然后“订阅 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
        ],
    ],

寻求帮助谢谢

4

1 回答 1

0

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');
于 2017-11-08T09:09:28.943 回答