1.概述
file_get_contents函数多用来于来采集远程服务器上的内容,但使用file_get_contents函数之前我们在php.ini中是必须把allow_url_fopen开启才行
cURL 是一个利用URL语法规定来传输文件和数据的工具,支持很多协议,如HTTP、FTP、TELNET等。
2、file_get_contents 和 curl 区别
1.curl 支持更多功能
curl 支持更多协议,有http、https、ftp、gopher、telnet、dict、file、ldap;模拟 Cookie 登录,爬取网页;FTP 上传下载。
fopen / file_get_contents 只能仅支持http协议获取数据。
2.性能
curl 可以进行 DNS 缓存,同一个域名下的图片或其它资源只需要进行一次DNS查询。
curl 相对来说更加快速稳定,访问量高的时候首选 curl,缺点就是相对于 file_get_contents 配置繁琐一点,file_get_contents 适用与处理小访问的应用。
CURL 访问方式
1.语法
curl_init; //初始化 cURL 会话。 curl_setopt; //设置 cURL 传输选项。 //curl_setopt 设置 CURLOPT_RETURNTRANSFER 为 TRUE 时将 curl_exec() 获取的信息以字符串返回。 curl_exec; //返回 true / false, curl_close; //关闭 cURL 会话。
2.get请求
//1.初始化 Curl$curl = curl_init(); //设置curl传输选项 curl_setopt($curl, CURLOPT_URL, 'www.baidu.com');//访问ip地址 curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);//设置为FALSE 禁止 cURL 验证对等证书 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);//设置为1或true时,获取的信息以字符串返回 $data = curl_exec($curl); //返回值 curl_close($curl); return $data;
3.post请求
$post_data = ['username' => '123456','password' => '******']; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'www.baidu.com/login'); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_POST, 1);//设置为1或true时,是post请求, curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);//post请求参数 $output = curl_exec($ch); curl_close($ch);$out = json_decode($output); return $out;
file_get_contents访问方式
1.语法:
file_get_contents(path, include_path, context, start, max_length)
path:要读取的路径或链接。
include_path:是否在路径中搜索文件,搜索则设为 1,默认为 false。
context:修改流的行为,如超时时间,GET / POST 等。
start:开始读文件的位置。
max_length:读取文件的字节数。
2.get请求
$ret = file_get_contents("http://www.baidu.com");
3.post请求
$url = 'www.baidu.com/login';$data = ['username' => '123456','password' => '******']; $data = json_encode($data); $opts = [ 'http' => [ 'method' => 'POST', 'header' => 'Content-type:application/json', 'content' => $data, ] ]; //stream_context_create()函数:创建并返回一个文本数据流并应用各种选项, //可用于fopen(),file_get_contents()等过程的超时设置、代理服务器、请求方式、头信息设置的特殊过程 $context = stream_context_create($opts); $ret = file_get_contents($url,false,$context);
总结
file_get_contents处理频繁小的时候,如果你的文件被1k+人处理。那么会占用您的服务器大量cpu。
curl 相对来说更加快速稳定,访问量高的时候首选 curl,
根据本人习惯,更喜欢curl,因为他是PHP专业的抓包工具,能够更好的支持数据协议。
版权声明
1.本站大部分下载资源收集于网络,不保证其完整性以及安全性,请下载后自行测试。
2.本站资源仅供学习和交流使用,版权归资源原作者所有,请在下载后24小时之内自觉删除。
3.若作商业用途,请购买正版,由于未及时购买和付费发生的侵权行为,与本站无关。
4.若内容涉及侵权或违法信息,请联系本站管理员进行下架处理,邮箱ganice520@163.com(本站不支持其他投诉反馈渠道,谢谢合作)
发表评论