您好,欢迎访问一九零五行业门户网

curl、fopen和file_get_contents区别

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就好了。
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区别,包括了方面的内容,希望对php教程有兴趣的朋友有所帮助。
其它类似信息

推荐信息