php - redis pub/sub 订阅返回连接错误

标签 php laravel socket.io laravel-5 predis

我正在使用 Laravel 5.1 并遵循此处的指南: http://laravel.com/docs/5.1/redis#pubsub

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

但是,我运行了我为 redis 发布/订阅所做的命令,当客户端发出消息时它没有收到任何东西。过了一会儿,抛出一个错误:

[Predis\Connection\ConnectionException] Error while reading line from the server. [tcp://127.0.0.1:6379]

然后我尝试在命令中使用 publish 方法,它起作用了。 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。

最佳答案

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

],

关于php - redis pub/sub 订阅返回连接错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30913364/

相关文章:

php - 加密密码 php 的最佳方式(2017 年)

php - 如何从字符串中的特定文本和字符获取整数(正则表达式/PHP)

php - 使用 PHP 检查网站是否启用了 Gzip

node.js - 如何在 socket.io 中获取多个套接字属性?

javascript - socket.io 和 Node 回调函数不起作用

php - 无法将数据上传到 wamp localhost 中的数据库

php - 在 laravel 5.2 内核控制台中通过新的 artisan 命令删除旧的 artisan 命令

php - 在 Laravel 中使用 where、whereHas 执行查询

php - MVC : PHP Laravel Vs Asp. 网络

javascript - 部署后套接字io不工作