php 使用curl获取远程数据
2022-05-31PHP
在php中,如果不仔细的去分析性能会发现file_get_contents与curl两个都有很多共同点的,他们都可以采集文件打开文件,但是如果仔细一对比会发现很多不同点,如果对比两者,我比较倾向于使用curl来访问远程url,据不完全测试,使用curl获取页面比用file_get_contents稳定的多。
在php中,如果不仔细的去分析性能会发现file_get_contents与curl两个都有很多共同点的,他们都可以采集文件打开文件,但是如果仔细一对比会发现很多不同点,如果对比两者,我比较倾向于使用curl来访问远程url。
PHP中fopen,file_get_contents,curl函数的区别:
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. fopen / file_get_contents 函数会受到php.ini文件中allow_url_open选项配置的影响。如果该配置关闭了,则该函数也就失效了。而curl不受该配置的影响。
4. curl 可以模拟多种请求,例如:POST数据,表单提交等,用户可以按照自己的需求来定制请求。而fopen / file_get_contents只能使用get方式获取数据。file_get_contents 获取远程文件时会把结果都存在一个字符串中 fiels函数则会储存成数组形式。
/**\r * 使用curl获取远程数据\r * @param string $url url连接路径\r * @return string 获取到的数据\r */\rfunction curl_get_contents($url){\r $ch=curl_init();\r curl_setopt($ch, CURLOPT_URL, $url); //设置访问的url地址\r // curl_setopt($ch,CURLOPT_HEADER,1); //是否显示头部信息\r curl_setopt($ch, CURLOPT_TIMEOUT, 5); //设置超时\r curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER[\'HTTP_USER_AGENT\']); //用户访问代理 User-Agent\r curl_setopt($ch, CURLOPT_REFERER,$_SERVER[\'HTTP_HOST\']); //设置 referer\r curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1); //跟踪301\r curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //返回结果\r\r //这个是重点,加上这个便可以支持http和https下载\r curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);\r\r $r=curl_exec($ch);\r curl_close($ch);\r return $r;\r}
示例:
$url = "https://www.52linmin.wang/";\r$res = curl_get_contents($url);\r\recho \'<pre>\';\rvar_dump($res);
很赞哦! ()