php curl獲取網(wǎng)頁內(nèi)容(IPV6下超時)的解決辦法
更新時間:2013年07月16日 09:18:00 作者:
如果開啟了IPv6,curl默認會優(yōu)先解析 IPv6,在對應域名沒有 IPv6 的情況下,會等待 IPv6 dns解析失敗 timeout 之后才按以前的正常流程去找 IPv4
原因:
在程序中我對curl獲取內(nèi)容都作了較為嚴格的超時限制,所以就會造成無法獲取內(nèi)容的問題。
解決方法:設(shè)置默認訪問為ipv4。
php的curl設(shè)置方法如下:
復制代碼 代碼如下:
<?php
/**
* IPV6下curl超時問題
*/
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
//設(shè)置curl默認訪問為IPv4
if(defined('CURLOPT_IPRESOLVE') && defined('CURL_IPRESOLVE_V4')){
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
}
//設(shè)置curl請求連接時的最長秒數(shù),如果設(shè)置為0,則無限
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
//設(shè)置curl總執(zhí)行動作的最長秒數(shù),如果設(shè)置為0,則無限
curl_setopt ($ch, CURLOPT_TIMEOUT,$timeout*3);
$file_contents = curl_exec($ch);
curl_close($ch);
注:curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4) 只有在php版本5.3及以上版本,curl版本7.10.8及以上版本時,以上設(shè)置才生效。
您可能感興趣的文章:
- php REMOTE_ADDR之獲取訪客IP的代碼
- php 獲取客戶端的真實ip
- php gethostbyname獲取域名ip地址函數(shù)詳解
- php 獲取本機外網(wǎng)/公網(wǎng)IP的代碼
- PHP 獲取客戶端真實IP地址多種方法小結(jié)
- php中獲取遠程客戶端的真實ip地址的方法
- php獲取用戶IPv4或IPv6地址的代碼
- php 獲取本地IP代碼
- PHP根據(jù)IP地址獲取所在城市具體實現(xiàn)
- php利用新浪接口查詢ip獲取地理位置示例
- php實現(xiàn)獲取局域網(wǎng)所有用戶的電腦IP和主機名、及mac地址完整實例
- php中獲取主機名、協(xié)議及IP地址的方法
- php實現(xiàn)根據(jù)IP地址獲取其所在省市的方法
- PHP 獲取ip地址代碼匯總
相關(guān)文章
在任意字符集下正常顯示網(wǎng)頁的方法二(續(xù))
在任意字符集下正常顯示網(wǎng)頁的方法二(續(xù))...2007-04-04
今天我來給大家介紹在php中跨網(wǎng)站請求偽造的實現(xiàn)方法與最后我們些常用的防止偽造的具體操作方法,有需要了解的朋友可進入?yún)⒖?/div> 2013-08-08
php中字符集轉(zhuǎn)換iconv函數(shù)使用總結(jié)
這篇文章主要介紹了php中字符集轉(zhuǎn)換iconv函數(shù)使用總結(jié),本文同時介紹了mb_convert_encoding函數(shù),需要的朋友可以參考下2014-10-10
PHP實現(xiàn)網(wǎng)頁內(nèi)容html標簽補全和過濾的方法小結(jié)【2種方法】
這篇文章主要介紹了PHP實現(xiàn)網(wǎng)頁內(nèi)容html標簽補全和過濾的方法,結(jié)合實例形式分析了php常見的標簽檢查、補全、閉合、過濾等相關(guān)操作技巧,需要的朋友可以參考下2017-04-04
phpmyadmin安裝時提示:Warning: require_once(./libraries/common.inc
common.inc.php這個文件是存在的,而且系統(tǒng)中php也不裝在C盤根目錄下,怎么會有這樣的提示呢?經(jīng)過一陣調(diào)試終于發(fā)現(xiàn)解決方法2011-08-08最新評論

