php zf2实现的代码中调用了redis,有时会报错'RedisException' with message 'read error on connection',绝大多数时候不出现这个错误。
我的代码如下:
//获取redis
$serviceManager = new ServiceManager();
$serviceManager->setFactory('redis', new RedisFactory());
$redis = $serviceManager->get('redis');
$data = json_decode($redis->getItem("wap_sso_website"));
经过查找各方资料,发现是php.ini文件中的一个配置项导致:
- default_socket_timeout = 60
由于redis扩展也是基于php 的socket方式实现,因此该参数值同样会起作用。
找到了问题就比较好解决了:
1、直接修改php.ini,将其设置为我们想要的值(这个不推荐)
2、在我们的脚本中通过以下方式设置,这样就比较灵活,不对其他脚本产生影响
- ini_set('default_socket_timeout', -1); //不超时