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;
?>

读者可以跑几次代码,或者抓取的地址可以换一下,就可以得出结论了。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值