curl多用于互联网网页之间的抓取,fopen多用于读取文件,而file_get_contents多用于获取静态页面的内容。

1. fopen /file_get_contents 每次请求都会重新做DNS查询,并不对DNS信息进行缓存。但是CURL会自动对DNS信息进行缓存。对同一域名下的网页或者图片的请求只需要一次DNS查询。这大大减少了DNS查询的次数。所以CURL的性能比fopen /file_get_contents 好很多。

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;//返回或者显示结果
?>
 
 

curl多用于互联网网页之间的抓取,fopen多用于读取文件,而file_get_contents多用于获取静态页面的内容。

1. fopen /file_get_contents 每次请求都会重新做DNS查询,并不对DNS信息进行缓存。但是CURL会自动对DNS信息进行缓存。对同一域名下的网页或者图片的请求只需要一次DNS查询。这大大减少了DNS查询的次数。所以CURL的性能比fopen
/file_get_contents 好很多。

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;//返回或者显示结果
?>

最新文章

  1. Codeigniter 3.0 相关文档 part one
  2. 配置jenkins,并把iOS包自动上传至fir.im
  3. html之hr,form标签
  4. 容器字段FieldContainer
  5. CircleLayout
  6. 更有效率的使用Visual Studio(一)
  7. 基础排序算法,java实现(快速,冒泡,选择,堆排序,插入)
  8. jQuery ajax传递特殊字符参数(例如+)
  9. UESTC_秋实大哥与时空漫游 2015 UESTC Training for Graph Theory&lt;Problem C&gt;
  10. 近十年one-to-one最短路算法研究整理【转】
  11. java 排序的几篇好文章
  12. [Web 前端] mockjs让前端开发独立于后端
  13. Gitlab日常备份和恢复
  14. 使用MDScratchImageView实现刮奖效果
  15. Linux系统下常用的磁盘管理命令——du / df / fdisk / mount / xxd
  16. CentOS 6.9/7通过yum安装指定版本的JDK/Maven
  17. 13.FutureTask异步计算
  18. java获取系统进程号
  19. space&#160;defender,太空版植物大战僵尸 游戏基本框架的设计
  20. LiveVideoStack Meet|深圳 多媒体开发新趋势

热门文章

  1. 【搬运】Visual Studio vs2017 vs2019 中文离线安装包下载,替代ISO镜像
  2. DDS工作原理及其性能分析
  3. JS 报错(intermediate value)(...) is not a function
  4. Java 应用程序的运行机制
  5. 中国大数据企业排行榜V6.0- 5 年后再去看看中几个大数据公司的发展状况
  6. C语言位操作中指定的某一位数置0、置1、取反
  7. rsyslog服务日志报错分析1
  8. post请求 大坑 注意点
  9. SAS学习笔记35 options语句
  10. css line-height &amp; 图片底部间隙的处理