今天莫名加了会班,然后就出Bug了,我们用的云数据库连不上了,赶紧重启服务器,然后好了,又可以连上了,看日志报错。
local.ERROR: SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Name or service not known
Ok.看意思应该是无法识别路由地址,百度一下,给的建议是直接把连接地址换成Ping的ip,或者重启php-fpm。因为云数据库的连接地址不是一个ip而是一串字符串域名。所以这个问题的原因就是php突然无法解析这个域名对应的ip了。php解析域名ip的函数是gethostbyname,也就是说是这个函数出了问题。那我们来说一下为什么重启php-fpm就可以了,因为php-fpm是一个管理php连接的主进程,它不会随着一次请求的结束而停止,而是会去安排新建一个php进程或者用之前用过但是未注销的php进程来处理http请求,所以当php-fpm出问题的时候它管理的其他php进程也会跟着它出问题,导致所有的请求都无法使用gethostbyname这个函数,也就一直无法连接上云数据库了。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐