当前位置: 首页 > 面试题库 >

Predis提供“从服务器读取行时出错”

干高歌
2023-03-14
问题内容

我正在使用predis并订阅了频道并进行监听,它抛出错误并死了,如下图所示,过了60秒后,肯定不是我的Web服务器错误或超时。

目前正在讨论的一个类似的问题在这里。无法得到太多。

我尝试将predis conf文件中的connection_timeout设置为0,但没有太大帮助。

另外,如果我继续使用(向其发送数据并进行处理)该工作程序,则不会出现任何错误。因此,它可能在某处超时,并且在连接方面也是如此。

这是我的代码段,可能会产生错误,因为如果将数据提供给工作程序,它将运行该代码并继续前进,此后不会产生任何错误。

$pubsub = $redis->pubSub();
$pubsub->subscribe($channel1);

foreach ($pubsub as $message) { //doing stuff here and unsubscribing from channel
}

跟踪

PHP Fatal error:  Uncaught exception 'Predis\Network\ConnectionException' with message 'Error while reading line from the server' in Predis/Network/ConnectionBase.php:159 Stack trace:
#0 library/vendor/predis/lib/Predis/Network/StreamConnection.php(195): Predis\Network\ConnectionBase->onConnectionError('Error while rea...')
#1 library/vendor/predis/lib/Predis/PubSub/PubSubContext.php(259): Predis\Network\StreamConnection->read()
#2 library/vendor/predis/lib/Predis/PubSub/PubSubContext.php(206): Predis\PubSub\PubSubContext->getValue()
#3 pdf/file.php(16): Predis\PubSub\PubSubContext->current()
#4 {main}   thrown in Predis/Network/ConnectionBase.php on line 159

也检查了redis.conf超时,它也被禁用。


问题答案:

只需将read_write_timeout连接参数设置为0或-1即可解决此问题。例如

$redis = new Predis\Client('tcp://10.0.0.1:6379'."?read_write_timeout=0");

设置连接参数记录在README文件中。Redis的作者在GitHub上的一个问题中指出了read_write_timeout此错误与参数的相关性,他在其中指出:

0`在redis.conf中进行设置来禁用Redis的默认超时时间,否则Redis将在闲置300秒后断开空闲客户端的连接。



 类似资料:
  • 我在SSL\u error\u日志文件中得到了这种Apache代理错误。 你知道这种错误吗?客户端必须等待3分钟以等待响应,然后才能强制断开连接。更改ssl证书后发生此错误。我们已将SHA-1证书更新为与所有浏览器兼容的SHA-2证书。观察并记录了各种超时情况。

  • 我正在尝试使用S3中的pyspark读取文件,并出现以下错误-- 我的代码很简单,但我可以使用BOTO3连接,但我需要使用pyspark,因为我正在处理的文件很大,还需要在CSV上进行一些聚合- java版本- python- Pypark/火花- 如果需要更多信息,请告诉我。

  • 我在生产环境中使用redis server,在HA中使用redis Sentinel。但是阅读文档,当客户机连接到sentinel时,sentinel将主redis服务器提供给客户机。 是所有的读写操作都在主服务器上进行,而从服务器只用于故障转移,还是我们可以使用从服务器读取数据?

  • 简介 服务提供器是所有 Laravel 应用程序引导中心。你的应用程序以及 Laravel 的所有核心服务都是通过服务提供器进行引导。 在这里,我们说的「引导」其实是指 注册 ,比如注册服务容器绑定、事件监听器、中间件,甚至是路由的注册。服务提供器是配置你的应用程序的中心。 Laravel 的 config/app.php 文件中有一个 providers 数组。数组中的内容是应用程序要加载的所有

  • 我正在从sftp服务器读取文件,并使用Spring Batch Framework将该文件加载到数据库中。下面是我的代码,但我遇到了一个错误 代码: 错误:

  • 简介 服务提供者是所有 Lumen 应用程序启动的中心所在。包括你自己的应用程序,以及所有的 Lumen 核心服务,都是通过服务提供者启动的。 但是,我们所说的「启动」指的是什么?一般而言,我们指的是 注册 事物,包括注册服务容器绑定、事件侦听器、中间件,甚至路由。服务提供者是设置你的应用程序的中心所在。 若你打开 Lumen 的 bootstrap/app.php 文件,你将会看到 $app->