探討file_get_contents與curl效率及穩(wěn)定性的分析
更新時間:2013年06月06日 11:26:29 作者:
本篇文章是對file_get_contents與curl效率及穩(wěn)定性進行了詳細(xì)的分析介紹,需要的朋友參考下
做過好多抓取別家網(wǎng)站內(nèi)容的產(chǎn)品,習(xí)慣了使用方便快捷的file_get_contents函數(shù),但是總是會遇到獲取失敗的問題,盡管按照手冊中的例子設(shè)置了超時,可多數(shù)時候不會奏效:
復(fù)制代碼 代碼如下:
$config['context'] = stream_context_create(array(‘http' => array(‘method' => “GET”,
'timeout' => 5//這個超時時間不穩(wěn)定,經(jīng)常不奏效
)
));
這時候,看一下服務(wù)器的連接池,會發(fā)現(xiàn)一堆類似的錯誤,讓你頭疼萬分:
file_get_contents(http://***): failed to open stream…
不得已,安裝了curl庫,寫了一個函數(shù)替換:
復(fù)制代碼 代碼如下:
<span style="color:#000000; font-weight:bold">function</span> curl_file_get_contents<span style="color:#009900">(</span><span style="color:#000088">$durl</span><span style="color:#009900">)</span><span style="color:#009900">{</span>
<span style="color:#000088">$ch</span> <span style="color:#339933">=</span> <span style="color:#990000">curl_init</span><span style="color:#009900">(</span><span style="color:#009900">)</span><span style="color:#339933">;</span>
<span style="color:#990000">curl_setopt</span><span style="color:#009900">(</span><span style="color:#000088">$ch</span><span style="color:#339933">,</span> CURLOPT_URL<span style="color:#339933">,</span> <span style="color:#000088">$durl</span><span style="color:#009900">)</span><span style="color:#339933">;</span>
<span style="color:#990000">curl_setopt</span><span style="color:#009900">(</span><span style="color:#000088">$ch</span><span style="color:#339933">,</span> CURLOPT_TIMEOUT<span style="color:#339933">,</span> <span style="color:#cc66cc">5</span><span style="color:#009900">)</span><span style="color:#339933">;</span>
<span style="color:#990000">curl_setopt</span><span style="color:#009900">(</span><span style="color:#000088">$ch</span><span style="color:#339933">,</span> CURLOPT_USERAGENT<span style="color:#339933">,</span> _USERAGENT_<span style="color:#009900">)</span><span style="color:#339933">;</span>
<span style="color:#990000">curl_setopt</span><span style="color:#009900">(</span><span style="color:#000088">$ch</span><span style="color:#339933">,</span> CURLOPT_REFERER<span style="color:#339933">,</span>_REFERER_<span style="color:#009900">)</span><span style="color:#339933">;</span>
<span style="color:#990000">curl_setopt</span><span style="color:#009900">(</span><span style="color:#000088">$ch</span><span style="color:#339933">,</span> CURLOPT_RETURNTRANSFER<span style="color:#339933">,</span> <span style="color:#cc66cc">1</span><span style="color:#009900">)</span><span style="color:#339933">;</span>
<span style="color:#000088">$r</span> <span style="color:#339933">=</span> <span style="color:#990000">curl_exec</span><span style="color:#009900">(</span><span style="color:#000088">$ch</span><span style="color:#009900">)</span><span style="color:#339933">;</span>
<span style="color:#990000">curl_close</span><span style="color:#009900">(</span><span style="color:#000088">$ch</span><span style="color:#009900">)</span><span style="color:#339933">;</span>
<span style="color:#b1b100">return</span> <span style="color:#000088">$r</span><span style="color:#339933">;</span>
<span style="color:#009900">}</span>
如此,除了真正的網(wǎng)絡(luò)問題外,沒再出現(xiàn)任何問題。
這是別人做過的關(guān)于curl和file_get_contents的測試:
file_get_contents抓取google.com需用秒數(shù):
2.31319094
2.30374217
2.21512604
3.30553889
2.30124092
curl使用的時間:
0.68719101
0.64675593
0.64326
0.81983113
0.63956594
差距很大吧?呵呵,從我使用的經(jīng)驗來說,這兩個工具不只是速度有差異,穩(wěn)定性也相差很大。建議對網(wǎng)絡(luò)數(shù)據(jù)抓取穩(wěn)定性要求比較高的朋友使用上面的curl_file_get_contents函數(shù),不但穩(wěn)定速度快,還能假冒瀏覽器欺騙目標(biāo)地址哦!
您可能感興趣的文章:
- php基于curl重寫file_get_contents函數(shù)實例
- PHP CURL或file_get_contents獲取網(wǎng)頁標(biāo)題的代碼及兩者效率的穩(wěn)定性問題
- php中file_get_contents與curl性能比較分析
- php采用file_get_contents代替使用curl實例
- 深入file_get_contents與curl函數(shù)的詳解
- 比file_get_contents穩(wěn)定的curl_get_contents分享
- php中使用Curl、socket、file_get_contents三種方法POST提交數(shù)據(jù)
- PHP curl 或 file_get_contents 獲取需要授權(quán)頁面的方法
相關(guān)文章
解析zend studio中直接導(dǎo)入svn中的項目的方法步驟
本篇文章是對zend studio中直接導(dǎo)入svn中的項目的方法步驟進行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06
PHP編程實現(xiàn)的TCP服務(wù)端和客戶端功能示例
這篇文章主要介紹了PHP編程實現(xiàn)的TCP服務(wù)端和客戶端功能,結(jié)合實例形式分析了php基于socket實現(xiàn)TCP服務(wù)器端與客戶端通信功能的相關(guān)配置、定義與使用技巧,需要的朋友可以參考下2018-04-04
用Json實現(xiàn)PHP與JavaScript間數(shù)據(jù)交換的方法詳解
本篇文章是對用Json實現(xiàn)PHP與JavaScript間數(shù)據(jù)交換的方法進行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06
php獲取字符串中各個字符出現(xiàn)次數(shù)的方法
這篇文章主要介紹了php獲取字符串中各個字符出現(xiàn)次數(shù)的方法,實例分析了php獲取字符串中字符出現(xiàn)次數(shù)的三種常見技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-02-02
PHP使用CURL實現(xiàn)對帶有驗證碼的網(wǎng)站進行模擬登錄的方法
這篇文章主要介紹了PHP使用CURL實現(xiàn)對帶有驗證碼的網(wǎng)站進行模擬登錄的方法,可以幫助讀者加深對CURL操作的理解與應(yīng)用,需要的朋友可以參考下2014-07-07

