|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
熟悉了PHP和MYSQL开发的要领之后,再回头看你写的那个留言本,你也许会怀疑那真的是你写的吗?当然,如果屋里还有鬼的话,也许是它写的-_- 1、fopen的利用
复制代码 代码以下:
<?php
$handle = fopen ("http://s.jb51.net/", "rb");
$contents = "";
while (!feof($handle)) {
$contents .= fread($handle, 8192);
}
fclose($handle);
echo $contents; //输入获得到得内容。
?>
复制代码 代码以下:
// 对 PHP 5 及更高版本可使用上面的代码
<?php
$handle = fopen("http://s.jb51.net", "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来完成
复制代码 代码以下:
<?php
$url = "http://s.jb51.net";
$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}");
PHP抓取内部资本函数fopen / file_get_contents / curl 的区分
fopen / file_get_contents 每次恳求城市从头做DNS查询,其实不对DNS信息停止缓存。
然而CURL会主动对DNS信息停止缓存。对统一域名下的网页或图片的恳求只需求一次DNS查询。
这大大削减了DNS查询的次数。
所以CURL的功能比fopen / file_get_contents 好良多。
剧本之家原创内容,转载请注明出处。看到好的帖子最好up一下,以使得更多的人得到分享。 |
|