【问题标题】:redis pub/sub subsribe returning connection errorredis pub/sub 订阅返回连接错误
【发布时间】:2015-09-03 23:22:44
【问题描述】:

我在 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。

【问题讨论】:

  • 请看一下这个主题的答案,看看是否有帮助:) stackoverflow.com/questions/11776029/…
  • 我看到了,如何将 ?read_write_timeout=0 设置为我的订阅方法?谢谢
  • 我猜你应该在设置连接的地方设置这个参数。可能在 vendor/'predis_package_path'/config 内的某个地方。不确定是否实际使用过redis。但我知道它提供的功能。我也了解到您正在尝试通过 websockets 发送消息

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


【解决方案1】:

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

],

【讨论】:

    猜你喜欢
    • 2020-09-26
    • 2023-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-22
    • 2011-07-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多