phpredis報錯信息:protocol error, got 'o' as reply type byte解決方案


今天在前端調用PHP的接口時,有報錯信息為:
protocol error, got 'o' as reply type byte
另外此錯誤有幾率會重現,並不是必現的。十分疑惑,遂百度一下,發現是redis的錯誤。

網上說是redis的連接問題,解決方案為:
在redis.conf中
1、將bind參數注釋
2、protected-mode由yes改為no

改完后重啟redis服務。
暫時未發現問題會復現。

另附參考鏈接:
1、
github的phpredis項目issue中該問題的提問:https://github.com/phpredis/phpredis/issues/52
此問題中懷疑是phpredis使用的是長連接,某種情況下共用一個socket導致出問題,還有就是不知道是不是fork()的原因,並建議fork時重連redis

2、
另一篇遇到此問題的討論帖:這個是用Discuss出現的。
https://www.52pojie.cn/forum.php?mod=viewthread&tid=446251&archive=1&extra=page%3D1&page=5
其中有個跟帖回復為:
覺得可能是使用了某個應用,沒操作好redis,你是不是用了某個DZ應用?還是說某個很消耗內存的應用在近期使用量劇增了?然后協議亂了取數據的時候超時了。覺得可能是使用了某個應用,沒操作好redis,你是不是用了某個DZ應用?還是說某個很消耗內存的應用在近期使用量劇增了?然后協議亂了取數據的時候超時了。
推薦修復方案:
如果找不到其他原因,那就修改一下PHP的配置,把soket超時設置一下
default_socket_timeout
個人覺得是某個山炮的DZ應用對redis沒有操作好

 


免責聲明!

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



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