专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »PHP教程 » phpcurl:有关 CURL 的几点心得体会 »正文

phpcurl:有关 CURL 的几点心得体会

来源: 发布时间:星期一, 2009年1月12日 浏览:96次 评论:0
  CURL 是 Client URL Library Functions 缩写由 Daniel Stenberg 创建更多内容可以参考他网站WebSite最近几天突然对 HTTP 采集有了兴趣的前我在做这方面般通过两种思路方法个是利用 PHP 自身文件操作PHP fopenreadfile 都是可以支持 http 协议这样可以很方便获取互联网上内容种思路方法是通过 PHP Socket 这个思路方法好处是对各种协议都可以支持缺点是使用起来比较麻烦要对协议有了解在 HTTP 获取方面运用 Socket Snoopy 类是个非常好用 PHP HTTP 客户端也是我原来最常用思路方法

  随便翻翻 PHP 手册就会发现PHP 本身可以支持 libcurl用 C/C 写成 libcurl 相比 Snoopy 更快速更可靠而且除了 HTTP 协议外还广泛支持其他协议( https, ftp, ladp 等等)libcurl 并不是 PHP 默认加载模块具体如何启用可以参考 PHP 手册这里就不多说了PHP libcurl 使用非常简单例如:

<?php
  $ch = curl_init("http://www.php.net");
  curl_exec($ch);
  curl_close($ch);
?>


   3行简单就可以完成对 http://www.php.net 页面读取并输出当然更多使用方法可以参考 PHP 手册这里只说说我在写时遇到个问题例如下面:

<?php
  $ch = curl_init;
  curl_opt($ch, CURLOPT_URL, "http://www.php.net");  //指定读取 php.net
  curl_opt($ch, CURLOPT_HEADER, 1);      //返回内容中包含 HTTP 头
  curl_opt($ch, CURLOPT_NOBODY, 1);      //不读取页面内容
  curl_exec($ch);            //执行 (1)
  curl_opt($ch, CURLOPT_URL, "http://www.php.net");  //指定读取 php.net
  curl_opt($ch, CURLOPT_HEADER, 0);      //返回内容中不包含 HTTP 头
  curl_opt($ch, CURLOPT_NOBODY, 0);      //读取页面内容
  curl_exec($ch);            //执行 (2)
  curl_close($ch);
?>


  按照我想法应该可以分别返回 HTTP 响应报头和页面内容可是上面这段执行结果为:(1)处正常返回 HTTP 响应报头(2)不会返回任何内容查了很多资料都没有提到这个问题最终无奈只好在读取(2)的前重新执行 curl_init即将上改成这样:

<?php
  $ch = curl_init;
  curl_opt($ch, CURLOPT_URL, "http://www.php.net");  //指定读取 php.net
  curl_opt($ch, CURLOPT_HEADER, 1);      //返回内容中包含 HTTP 头
  curl_opt($ch, CURLOPT_NOBODY, 1);      //不读取页面内容
  curl_exec($ch);            //执行 (1)
  curl_close($ch);
  $ch = curl_init;
  curl_opt($ch, CURLOPT_URL, "http://www.php.net");  //指定读取 php.net
  curl_opt($ch, CURLOPT_HEADER, 0);      //返回内容中不包含 HTTP 头
  curl_opt($ch, CURLOPT_NOBODY, 0);      //读取页面内容
  curl_exec($ch);            //执行 (2)
  curl_close($ch);
?>


  返回结果正常虽然可以通过这种思路方法解决问题但对这个现象我感觉非常奇怪是 libcurl 本身问题还是我使用思路方法不当呢?还希望熟悉 curl 朋友帮忙指正

0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: