如果開啟了IPv
curl默認會優先解析 IPv
在對應域名沒有 IPv
的情況下
會等待 IPv
dns解析失敗 timeout 之後才按以前的正常流程去找 IPv
原因
在程序中我對curl獲取內容都作了較為嚴格的超時限制所以就會造成無法獲取內容的問題
解決方法設置默認訪問為ipv
php的curl設置方法如下
復制代碼 代碼如下:
<?php
/**
* IPV
下curl超時問題
*/
$ch = curl_init();
curl_setopt ($ch
CURLOPT_URL
$url);
curl_setopt ($ch
CURLOPT_RETURNTRANSFER
true);
//設置curl默認訪問為IPv
if(defined(
CURLOPT_IPRESOLVE
) && defined(
CURL_IPRESOLVE_V
)){
curl_setopt($ch
CURLOPT_IPRESOLVE
CURL_IPRESOLVE_V
);
}
//設置curl請求連接時的最長秒數
如果設置為
則無限
curl_setopt ($ch
CURLOPT_CONNECTTIMEOUT
$timeout);
//設置curl總執行動作的最長秒數
如果設置為
則無限
curl_setopt ($ch
CURLOPT_TIMEOUT
$timeout*
);
$file_contents = curl_exec($ch);
curl_close($ch);
注curl_setopt($ch CURLOPT_IPRESOLVE CURL_IPRESOLVE_V) 只有在php版本及以上版本curl版本及以上版本時以上設置才生效
From:http://tw.wingwit.com/Article/program/PHP/201311/20885.html