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;//返回或者显示结果
?>
相关文章
相关标签/搜索