【发布时间】:2012-07-31 08:09:16
【问题描述】:
我正在使用predis,它已订阅频道并正在收听。它会引发以下错误(如下)并在 60 秒后完全消失。这肯定不是我的网络服务器错误或超时。
here 正在讨论类似的问题。无法获得太多。
我尝试将 predis conf 文件中的 connection_timeout 设置为 0,但没有多大帮助。
另外,如果我继续使用(向它发送数据并处理)worker,它不会给出任何错误。所以它很可能在某个地方超时,而且连接也是如此。
这是我的代码 sn-p,它可能会产生错误,因为如果将数据提供给 worker,它会运行此代码并继续前进,之后不会产生错误。
$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 超时,它也被禁用了。
【问题讨论】:
-
你可以使用 redis-cli 连接到 redis 吗?
-
是的,如果数据被处理,worker 也可以正常工作,如果它被放置 60 秒,它就会死亡并给出错误