我在一个PHP项目中使用Redis。我使用phpredis作为客户端。有时候,在长时间的CLI脚本中,我遇到了PHP分段错误。为什么我应该关闭或保持Redis连接打开?
我以前经验过,phpredis在连接超时时遇到问题。由于我的Redis配置被配置为在300秒后自动关闭空闲连接,我想这会导致分段错误。
为了能够选择是否增加连接超时或将其默认为0(意思是“永不超时”),我想知道可能的优点和缺点是什么?
为什么我不应该关闭连接?
为什么我应该确保连接不会打开?
感谢
我在一个PHP项目中使用Redis。我使用phpredis作为客户端。有时候,在长时间的CLI脚本中,我遇到了PHP分段错误。为什么我应该关闭或保持Redis连接打开?
我以前经验过,phpredis在连接超时时遇到问题。由于我的Redis配置被配置为在300秒后自动关闭空闲连接,我想这会导致分段错误。
为了能够选择是否增加连接超时或将其默认为0(意思是“永不超时”),我想知道可能的优点和缺点是什么?
为什么我不应该关闭连接?
为什么我应该确保连接不会打开?
感谢
的回答你的问题在很大程度上取决于你的应用程序的Redis使用的情况。那么,您是否应该永远不要关闭空闲连接超时连接?
一般没有,你应该保持默认 - 0.为什么或者:
p.s.当然你可以自己实现在php中重新连接insome代理类。我们在高负载环境中有redis - 每秒约4000个连接。在2.4版本之后,我们不使用空闲连接超时。并没有任何类型的麻烦。
通常,打开连接是一项昂贵的操作,所以现代最佳实践是保持打开。另一方面,开放连接需要资源(从数据库)进行管理,以保持大量闲置连接的打开也是有问题的。这种折衷通常通过使用连接池来解决。
这就是说,更有趣的是为什么PHP段错误。显然,超时是由长时间运行的命令(您的案例中的CLI脚本)造成的,它阻止了Redis(即mostly single threaded)参与PHP应用程序的连接。虽然这是一个众所周知的Redis行为,但我期望PHP(无需在客户端库重新连接时的事件)不会如此悲惨地穿上它的裤子。