php 抓取服务器命令,php使用fopen、curl获取网站及远程服务器信息的实例代码

例1,fopen获取网站内容。

/**

* 获取网站内容 fopen函数示例

* edit www.jbxue.com

*/

$handle = fopen ("http://www.jbxue.com/", "rb");

$contents = "";

while (!feof($handle)) {

$contents .= fread($handle, 8192);

}

fclose($handle);

echo $contents; //输出获取到得内容。

?>

代码2,

//适用于 PHP 5 及更高版本

$handle = fopen("http://www.jbxue.com", "rb");

$contents = stream_get_contents($handle);

fclose($handle);

echo $contents;

?>

注意:

以上代码,容易报:failed to open stream: HTTP request failed!错误。

解决方法,可以参考下面的介绍。

有朋友建议在php.ini中,有两个选项:allow_url_fopen =on(表示可以通过url打开远程文件),user_agent="PHP"(表示通过哪种脚本访问网络,默认前面有个 " ; " 去掉即

可。)重启服务器。

但操作后,还是会有警告信息,还得设置php.ini中的user_agent,php默认的user_agent是PHP,把它改成Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)来模拟浏览

器:

user_agent="Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"

例2、通过curl来实现获取远程服务器信息。

代码:

/**

* curl获取网站内容

*/

$url = "http://www.jbxue.com";

$ch = curl_init();

curl_setopt ($ch, CURLOPT_URL, $url);

curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT,10);

$dxycontent = curl_exec($ch);

echo $dxycontent;

?>

这里还有个方法,linux下可以这样:

exec("wget {$url}");

有关wget的用法,大家可以参考如下的文章:

Linux的下载命令wget详解及例子

linux的wget命令详解

使用wget做站点镜像及wget的高级用法

linux下的下载利器wget的使用

wget下载文件时重命名的方法

不得不推荐下wget这个命令啊,那是相当的好用,建议大家牢固掌握。

下面说说,PHP抓取外部资源函数fopen / file_get_contents / curl 的区别:

fopen / file_get_contents 每次请求都会重新做DNS查询,并不对DNS信息进行缓存。

但是CURL会自动对DNS信息进行缓存。对同一域名下的网页或者图片的请求只需要一次DNS查询。如此便大大减少了DNS查询的次数。

因此,CURL的性能比fopen / file_get_contents要好很多。

有了以上的分析,在用php获取网站内容时,对这几个函数如何取舍,你现在的思路是否清晰很多呢?!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值