redis pub / sub subsribe返回连接错误

时间:2015-06-18 10:53:41

标签: php laravel socket.io laravel-5 predis

我在Laravel 5.1上并遵循指南: http://laravel.com/docs/5.1/redis#pubsub

我创建了一个简单的socket.io服务器,在客户端我向我的通道发出了一条消息,socket.io服务器能够记录该消息。

但是,我运行了我为redis pub / sub制作的命令,当客户端发出消息时,它没有收到任何信息。过了一会儿,会抛出一个错误:

  

[Predis \ Connection \ ConnectionException]读取行时出错   从服务器。 [TCP://127.0.0.1:6379]

然后我尝试在命令中使用发布方法,它的工作原理。 socket.io服务器能够记录消息。

这是我的控制台命令

<?php

namespace App\Console\Commands;

use Illuminate\Support\Facades\Redis;
use Illuminate\Console\Command;

class ChannelSub extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'channel:sub';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Command description.';

    /**
     * Create a new command instance.
     *
     * @return void
     */
    public function __construct()
    {
        parent::__construct();
    }

    /**
     * Execute the console command.
     *
     * @return mixed
     */
    public function handle()
    {

        Redis::subscribe(['my-channel'], function($message) {
            $this->info($message);
        });
    }
}

尝试

php artisan channel:sub

我在Laravel中使用predis / predis来支持Redis。

1 个答案:

答案 0 :(得分:0)

Laravel 5.2更改config / database.php

'redis' => [

    'cluster' => false,

    'default' => [
        'host' => env('REDIS_HOST', 'localhost'),
        'password' => env('REDIS_PASSWORD', null),
        'port' => env('REDIS_PORT', 6379),
        'database' => 0,
    ],
    'subscribe' => [
        'host' => env('REDIS_HOST', 'localhost'),
        'password' => env('REDIS_PASSWORD', null),
        'port' => env('REDIS_PORT', 6379),
        'database' => 0,
        'read_write_timeout' => 0
    ],

],