PHP使用CURL遇到name lookup timed out
问题背景
定位原因
解决思路
问题背景
PHP在使用CURL请求时,遇到name lookup timed out
定位原因
CURL会先解析IPV6,再解析IPV4的域名。在解析时,服务器短暂超时了。
解决思路
一、代码中设置curl默认访问为IPv4
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
二、服务器禁用IPv6
CURLOPT_CONNECTTIMEOUT 在尝试连接时,等待的秒数。如果设置为0,则无限等待。
CURLOPT_CONNECTTIMEOUT_MS 在尝试连接时,等待的毫秒数。如果设置为0,则无限等待。(从PHP 5.2.3起可用)
CURLOPT_TIMEOUT 允许连接(CURL函数执行)的最长秒数。
CURLOPT_TIMEOUT_MS 允许连接(CURL函数执行)的最长毫秒数。(从PHP 5.2.3起可使用)
CURLOPT_DNS_CACHE_TIMEOUT 设置在内存中保存DNS信息的时间,默认为120秒。