首頁 >後端開發 >php教程 >curl、fopen和file_get_contents區別

curl、fopen和file_get_contents區別

WBOY
WBOY原創
2016-07-29 09:15:231536瀏覽

curl多用於互聯網網頁之間的抓取,fopen多用於讀取文件,而file_get_contents多用於獲取靜態頁面的內容。

1. fopen /file_get_contents 每次請求都會重新做DNS查詢,並但是CURL會自動快取DNS資訊。同一網域下的網頁或圖片的請求只需要一次DNS查詢。這大大減少了DNS查詢的次數。所以CURL的效能比fopen /file_get_contents 好很多。 2. 

fopen /file_get_contents在請求HTTP 。而curl卻可以。這樣在多次要求多個連結時,curl效率會好一些。 3. curl可以模擬多種請求,例如:POST數據,表單提交等,用戶可以按照自己的需求來定制請求。而fopen / file_get_contents只能使用get方式取得資料。 學習才發現,curl支援很多協議,有FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE以及LDAP,也就是說,它能做到很多file_get_content做不到的事情。 curl在php可以實現遠端取得與擷取內容;實現PHP網頁版的FTP上傳下載;實現模擬登陸;實現介面對接(API),資料傳輸;實現模擬Cookie;下載檔案斷點續傳等等,功能十分強大。 了解curl一些基本的使用後,才發現其實並不難,只不過記住裡面一些設定參數,難弄一點,但是我們記住幾個常用的就可以了。 開啟curl:

因為PHP預設是不支援curl功能的,因此如果要用curl的話,首先需要在php.ini中開啟該功能,即去掉;extension= php_curl.dll 前面的分號,然後保存後重啟apache/iis就好了。

<precourier new border-width:1px border-style:solid border-color:rgb rgb background-color:rgb padding:5px><span><?</span><span>php</span><span>  $curl </span><span>=</span><span> curl_init</span><span>();</span><span>//初始化一个cURL对象</span><span>  $url </span><span>=</span><span></span><span>"http://cart.jd.com/cart/cart.html?backurl=http://item.jd.com/176166.html&rid=0.9533184533      938766"</span><span>;</span><span>  $header </span><span>=</span><span> array</span><span>();</span><span>  $header</span><span>[]</span><span></span><span>=</span><span></span><span>'User-Agent: 5.0 (iPhone; U; CPU iPhone OS 4_3 like Mac OS X; en-us)'</span><span>;</span><span>  $header</span><span>[]</span><span></span><span>=</span><span></span><span>'Accept: text/html,application/xhtml&#43;xml,application/xml;q=0.9,*/*;q=0.8'</span><span>;</span><span>  $header</span><span>[]=</span><span></span><span>'Accept-Encoding: gzip,deflate'</span><span>;</span><span>  $header</span><span>[]=</span><span></span><span>'//可以根据需要增加header内容'</span><span>;</span><span>  curl_setopt</span><span>(</span><span>$culr</span><span>,</span><span>CURLOPT_URL</span><span>,</span><span> $url</span><span>);</span><span>//设置你需要抓去的URL地址</span><span>  curl_setopt</span><span>(</span><span>$curl</span><span>,</span><span>CURLOPT_HEADER</span><span>,</span><span>$header </span><span>);</span><span>//设置header</span><span>  curl_setopt</span><span>(</span><span>$curl</span><span>,</span><span>CURLOPT_RETURNTRANSFER</span><span>,</span><span>1</span><span>);</span><span>//将结果返回输出到字符串</span><span>  $str </span><span>=</span><span> curl_exec</span><span>(</span><span>$curl</span><span>);运行</span><span>cURL</span><span>,请求网页</span><span>  curl_close</span><span>(</span><span>$curl</span><span>);</span><span>//关闭url请求</span><span></span><span>return</span><span> $str</span><span>;</span><span>//返回或者显示结果</span><span>?></span></precourier>

以上就介紹了curl、fopen和file_get_contents區別,包含了方面的內容,希望對PHP教學有興趣的朋友有幫助。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn