解決phpredis 'RedisException' with message 'read error on connection'


最近一個後臺常駐job通過redis的brpop阻塞讀取消息時,設置的超時時間較長

list($key,$row)=$redis->brPop($queue_name,3600); //超時時間爲1小時

但是在實際的使用中發現很短時間後就會退出,通過查看error log,發現:'RedisException' with message 'read error on connection' 提示

經過一番折騰,原來發現是php.ini文件中的一個配置項導致:

default_socket_timeout = 60
由於redis擴展也是基於php 的socket方式實現,因此該參數值同樣會起作用。

找到了問題就比較好解決了:

1、直接修改php.ini,將其設置爲我們想要的值(這個不推薦)

2、在我們的腳本中通過以下方式設置,這樣就比較靈活,不對其他腳本產生影響

ini_set('default_socket_timeout', -1);  //不超時


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章