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); //不超時