curl多用於互聯網網頁之間的抓取,fopen多用於讀取文件,而file_get_contents多用於獲取靜態頁面的內容。php
1. fopen /file_get_contents 每次請求都會從新作DNS查詢,並不對DNS信息進行緩存。可是CURL會自動對DNS信息進行緩存。對同一域名下的網頁或者圖片的請求只須要一次DNS查詢。這大大減小了DNS查詢的次數。因此CURL的性能比fopen /file_get_contents 好不少。html
2. fopen /file_get_contents在請求HTTP時,使用的是http_fopen_wrapper,不會keeplive。而curl卻能夠。這樣在屢次請求多個連接時,curl效率會好一些。apache
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;下載文件斷點續傳等等,功能十分強大。app
瞭解curl一些基本的使用後,才發現其實並不難,只不過記住裏面一些設置參數,難弄一點,可是咱們記住幾個經常使用的就能夠了。curl
開啓curl:性能
由於PHP默認是不支持curl功能的,所以若是要用curl的話,首先須要在php.ini中開啓該功能,即去掉 ;extension= php_curl.dll 前面的分號,而後保存後重啓apache/iis就行了。學習
<?php
$curl = curl_init();//初始化一個cURL對象
$url = "http://cart.jd.com/cart/cart.html?backurl=http://item.jd.com/176166.html&rid=0.9533184533 938766";
$header = array();
$header[] = 'User-Agent: 5.0 (iPhone; U; CPU iPhone OS 4_3 like Mac OS X; en-us)';
$header[] = 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8';
$header[]= 'Accept-Encoding: gzip,deflate';
$header[]= '//能夠根據須要增長header內容';
curl_setopt($culr,CURLOPT_URL, $url);//設置你須要抓去的URL地址
curl_setopt($curl,CURLOPT_HEADER,$header );//設置header
curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);//將結果返回輸出到字符串
$str = curl_exec($curl);運行cURL,請求網頁
curl_close($curl);//關閉url請求
return $str;//返回或者顯示結果
?>
curl多用於互聯網網頁之間的抓取,fopen多用於讀取文件,而file_get_contents多用於獲取靜態頁面的內容。url
1. fopen /file_get_contents 每次請求都會從新作DNS查詢,並不對DNS信息進行緩存。可是CURL會自動對DNS信息進行緩存。對同一域名下的網頁或者圖片的請求只須要一次DNS查詢。這大大減小了DNS查詢的次數。因此CURL的性能比fopen /file_get_contents 好不少。spa
2. fopen /file_get_contents在請求HTTP時,使用的是http_fopen_wrapper,不會keeplive。而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就行了。
<?php
$curl = curl_init();//初始化一個cURL對象
$url = "http://cart.jd.com/cart/cart.html?backurl=http://item.jd.com/176166.html&rid=0.9533184533 938766";
$header = array();
$header[] = 'User-Agent: 5.0 (iPhone; U; CPU iPhone OS 4_3 like Mac OS X; en-us)';
$header[] = 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8';
$header[]= 'Accept-Encoding: gzip,deflate';
$header[]= '//能夠根據須要增長header內容';
curl_setopt($culr,CURLOPT_URL, $url);//設置你須要抓去的URL地址
curl_setopt($curl,CURLOPT_HEADER,$header );//設置header
curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);//將結果返回輸出到字符串
$str = curl_exec($curl);運行cURL,請求網頁
curl_close($curl);//關閉url請求
return $str;//返回或者顯示結果
?>