溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

php中file_get_contents與curl效率及穩(wěn)定性的示例分析

發(fā)布時(shí)間:2021-10-14 09:13:50 來(lái)源:億速云 閱讀:146 作者:小新 欄目:開(kāi)發(fā)技術(shù)

這篇文章主要為大家展示了“php中file_get_contents與curl效率及穩(wěn)定性的示例分析”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“php中file_get_contents與curl效率及穩(wěn)定性的示例分析”這篇文章吧。

做過(guò)好多抓取別家網(wǎng)站內(nèi)容的產(chǎn)品,習(xí)慣了使用方便快捷的file_get_contents函數(shù),但是總是會(huì)遇到獲取失敗的問(wèn)題,盡管按照手冊(cè)中的例子設(shè)置了超時(shí),可多數(shù)時(shí)候不會(huì)奏效:

代碼如下:


$config['context'] = stream_context_create(array(‘http' => array(‘method' => “GET”,
   'timeout' => 5//這個(gè)超時(shí)時(shí)間不穩(wěn)定,經(jīng)常不奏效
   )
  ));


這時(shí)候,看一下服務(wù)器的連接池,會(huì)發(fā)現(xiàn)一堆類似的錯(cuò)誤,讓你頭疼萬(wàn)分:
file_get_contents(http://***): failed to open stream…
不得已,安裝了curl庫(kù),寫了一個(gè)函數(shù)替換:

代碼如下:


<span >function</span> curl_file_get_contents<span >(</span><span >$durl</span><span >)</span><span >{</span>
&nbsp;&nbsp;&nbsp;<span >$ch</span> <span >=</span> <span >curl_init</span><span >(</span><span >)</span><span >;</span>
&nbsp;&nbsp;&nbsp;<span >curl_setopt</span><span >(</span><span >$ch</span><span >,</span> CURLOPT_URL<span >,</span> <span >$durl</span><span >)</span><span >;</span>
&nbsp;&nbsp;&nbsp;<span >curl_setopt</span><span >(</span><span >$ch</span><span >,</span> CURLOPT_TIMEOUT<span >,</span> <span >5</span><span >)</span><span >;</span>
&nbsp;&nbsp;&nbsp;<span >curl_setopt</span><span >(</span><span >$ch</span><span >,</span> CURLOPT_USERAGENT<span >,</span> _USERAGENT_<span >)</span><span >;</span>
&nbsp;&nbsp;&nbsp;<span >curl_setopt</span><span >(</span><span >$ch</span><span >,</span> CURLOPT_REFERER<span >,</span>_REFERER_<span >)</span><span >;</span>
&nbsp;&nbsp;&nbsp;<span >curl_setopt</span><span >(</span><span >$ch</span><span >,</span> CURLOPT_RETURNTRANSFER<span >,</span> <span >1</span><span >)</span><span >;</span>
&nbsp;&nbsp;&nbsp;<span >$r</span> <span >=</span> <span >curl_exec</span><span >(</span><span >$ch</span><span >)</span><span >;</span>
&nbsp;&nbsp;&nbsp;<span >curl_close</span><span >(</span><span >$ch</span><span >)</span><span >;</span>
&nbsp;&nbsp;&nbsp;<span >return</span> <span >$r</span><span >;</span>
&nbsp;<span >}</span>


如此,除了真正的網(wǎng)絡(luò)問(wèn)題外,沒(méi)再出現(xiàn)任何問(wèn)題。
這是別人做過(guò)的關(guān)于curl和file_get_contents的測(cè)試:
file_get_contents抓取google.com需用秒數(shù):
2.31319094
2.30374217
2.21512604
3.30553889
2.30124092
curl使用的時(shí)間:
0.68719101
0.64675593
0.64326
0.81983113
0.63956594
差距很大吧?呵呵,從我使用的經(jīng)驗(yàn)來(lái)說(shuō),這兩個(gè)工具不只是速度有差異,穩(wěn)定性也相差很大。建議對(duì)網(wǎng)絡(luò)數(shù)據(jù)抓取穩(wěn)定性要求比較高的朋友使用上面的curl_file_get_contents函數(shù),不但穩(wěn)定速度快,還能假冒瀏覽器欺騙目標(biāo)地址哦!

以上是“php中file_get_contents與curl效率及穩(wěn)定性的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

php
AI