curl与file_get_contents的比较
一般来说大家写小偷程序都喜欢用file_get_contents(),确实,简单无脑又暴力。但是后面发现其实,除了只是编码简便外,其他特性远远不及curl。学习才发现,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对象 curl_setopt($curl, CURLOPT_URL, "http://www.baidu.com"); //设置你需要抓取的URL curl_setopt($curl,CURLOPT_RETURNTRANSFER,1); //设置是将结果保存到字符串中还是输出到屏幕上,1表示将结果保存到字符串 $str = curl_exec($curl); //执行请求 echo $str; //输出抓取的结果 curl_close($curl); //关闭url请求 ?>
怎么比较性能,所谓性能,一般来说,大家很看重时间
<?php //curl获取方式 list($micro,$second)=explode(" ",microtime()); $start = $micro+$second; $url="http://www.baidu.com"; $ch = curl_init(); $timeout = 5; curl_setopt ($ch, CURLOPT_URL, $url); curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout); $file_contents = curl_exec($ch); curl_close($ch); //file_get_contents获取方式 list($micro,$second)=explode(" ",microtime()); $end = $micro+$second; echo $end-$start; //echo $file_contents; echo "<hr>"; list($micro,$second)=explode(" ",microtime()); $start = $micro+$second; $url="http://www.baidu.com"; $str=file_get_contents($url); list($micro,$second)=explode(" ",microtime()); $end = $micro+$second; echo $end-$start; ?>
读者可以跑几次代码,或者抓取的地址可以换一下,就可以得出结论了。
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: mysql在命令行创建数据库,修改数据库,删除数据库
- 下一篇: C语言数据类型部分总结