Php redis发布/订阅返回连接错误
我在Laravel 5.1上,并遵循此处的指南: 我创建了一个简单的socket.io服务器,在客户端我向我的通道发送了一条消息,socket.io服务器能够记录该消息 但是,我运行了为redis pub/sub生成的命令,当客户端发出消息时,它不会收到任何消息。一段时间后,将抛出一个错误: 读取线路时[Predis\Connection\ConnectionException]错误 从服务器。[tcp://127.0.0.1:6379] 然后我尝试在命令中使用publish方法,它可以工作。socket.io服务器能够记录消息 这是我的控制台命令Php redis发布/订阅返回连接错误,php,laravel,socket.io,laravel-5,predis,Php,Laravel,Socket.io,Laravel 5,Predis,我在Laravel 5.1上,并遵循此处的指南: 我创建了一个简单的socket.io服务器,在客户端我向我的通道发送了一条消息,socket.io服务器能够记录该消息 但是,我运行了为redis pub/sub生成的命令,当客户端发出消息时,它不会收到任何消息。一段时间后,将抛出一个错误: 读取线路时[Predis\Connection\ConnectionException]错误 从服务器。[tcp://127.0.0.1:6379] 然后我尝试在命令中使用publish方法,它可以工作。
<?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);
});
}
}
我正在使用predis/predis来支持Laravel中的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
],
],
请看一下这个主题的答案,看看它是否有帮助:)我看到了,我如何将?read_write_timeout=0设置为我的subscribe方法?谢谢我想你应该在建立连接的地方设置这个参数。可能在供应商/predis\u包路径/config中的某个地方。不确定你是否真的用过redis。但我知道它提供的功能。我还了解到您正试图通过WebSocket发送消息
'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
],
],