curl、fopen和file_get_contents區別

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就行了。學習

 

 

<wiz_code_mirror>
 
 
 
 
 
<?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就行了。

 

 

<wiz_code_mirror>
 
 
 
 
 
<?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;//返回或者顯示結果
?>
相關文章
相關標籤/搜索