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

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM