熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> PHP編程 >> 正文

php curl獲取網頁內容(IPV6下超時)的解決辦法

2013-11-15 12:24:27  來源: PHP編程 
如果開啟了IPvcurl默認會優先解析 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
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.