方法1: 用file_get_contents 以get方式获取内容
$url='http://www.domain.com/?para=123';
$html = file_get_contents($url);
echo $html;
用时:10个页面 (4-5 s)
header("Content-type:text/html;charset=utf-8");
//程序运行时间
$starttime = explode(' ',microtime());
/*········以下是代码区·········*/
for ($i=1;$i<11;$i++) {
$url='http://xiangmu.1637.com/p'.$i.'.html';
$html = file_get_contents($url);
}
/*········以上是代码区·········*/
//程序运行时间
$endtime = explode(' ',microtime());
$thistime = $endtime[0]+$endtime[1]-($starttime[0]+$starttime[1]);
$thistime = round($thistime,3);
echo "本网页执行耗时:".$thistime." 秒。";
方法2: 用fopen打开url, 以get方式获取内容
$fp = fopen($url, 'r');
$header = stream_get_meta_data($fp);//获取报头信息
while(!feof($fp)) {
$result .= fgets($fp, 1024);
}
echo "url header: {$header} <br>";
echo "url body: $result";
fclose($fp);
用时:10个页面 (4-5 s)
header("Content-type:text/html;charset=utf-8");
//程序运行时间
$starttime = explode(' ',microtime());
/*········以下是代码区·········*/
for ($i=1;$i<11;$i++) {
$url='http://xiangmu.1637.com/p'.$i.'.html';
$fp = fopen($url, 'r');
$header = stream_get_meta_data($fp);//获取报头信息
while(!feof($fp)) {
$result .= fgets($fp, 1024);
}
//echo $result;
fclose($fp);
}
/*········以上是代码区·········*/
//程序运行时间
$endtime = explode(' ',microtime());
$thistime = $endtime[0]+$endtime[1]-($starttime[0]+$starttime[1]);
$thistime = round($thistime,3);
echo "本网页执行耗时:".$thistime." 秒。";
方法3:用fsockopen函数打开url,以get方式获取完整的数据,包括header和body
$url='http://xiangmu.1637.com/p1.html';
echo get_url($url);
function get_url ($url,$cookie=false)
{
$url = parse_url($url);
$query = $url[path]."?".$url[query];
echo "Query:".$query;
$fp = fsockopen( $url[host], $url[port]?$url[port]:80 , $errno, $errstr, 30);
if (!$fp) {
return false;
} else {
$request = "GET $query HTTP/1.1\r\n";
$request .= "Host: $url[host]\r\n";
$request .= "Connection: Close\r\n";
if($cookie) $request.="Cookie: $cookie\n";
$request.="\r\n";
fwrite($fp,$request);
while(!@feof($fp)) {
$result .= @fgets($fp, 1024);
}
fclose($fp);
return $result;
}
}
//获取url的html部分,去掉header
function GetUrlHTML($url,$cookie=false)
{
$rowdata = get_url($url,$cookie);
if($rowdata)
{
$body= stristr($rowdata,"\r\n\r\n");
$body=substr($body,4,strlen($body));
return $body;
}
return false;
}
用时:10个页面 (3-6 s)
header("Content-type:text/html;charset=utf-8");
//程序运行时间
$starttime = explode(' ',microtime());
/*········以下是代码区·········*/
function get_url ($url,$cookie=false)
{
$url = parse_url($url);
$query = $url[path]."?".$url[query];
$fp = fsockopen( $url[host], $url[port]?$url[port]:80 , $errno, $errstr, 30);
if (!$fp) {
return false;
} else {
$request = "GET $query HTTP/1.1\r\n";
$request .= "Host: $url[host]\r\n";
$request .= "Connection: Close\r\n";
$request.="\r\n";
fwrite($fp,$request);
while(!@feof($fp)) {
$result .= @fgets($fp, 1024);
}
fclose($fp);
return $result;
}
}
//获取url的html部分,去掉header
function GetUrlHTML($url,$cookie=false)
{
$rowdata = get_url($url,$cookie);
if($rowdata)
{
$body= stristr($rowdata,"\r\n\r\n");
$body=substr($body,4,strlen($body));
return $body;
}
return false;
}
for ($i=1;$i<11;$i++) {
$url='http://xiangmu.1637.com/p'.$i.'.html';
//$url='http://xiangmu.1637.com/p1.html';
get_url($url);
}
/*········以上是代码区·········*/
//程序运行时间
$endtime = explode(' ',microtime());
$thistime = $endtime[0]+$endtime[1]-($starttime[0]+$starttime[1]);
$thistime = round($thistime,3);
echo "本网页执行耗时:".$thistime." 秒。";
方法4:使用curl库,使用curl库之前,可能需要查看一下php.ini是否已经打开了curl扩展
$url='http://xiangmu.1637.com/p1.html';
$ch = curl_init();
$timeout = 5;
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$file_contents = curl_exec($ch);
curl_close($ch);
echo $file_contents;
用时:10个页面 (3-6 s)
header("Content-type:text/html;charset=utf-8");
//程序运行时间
$starttime = explode(' ',microtime());
/*········以下是代码区·········*/
for ($i=1;$i<11;$i++) {
$url='http://xiangmu.1637.com/p'.$i.'.html';
//$url='http://xiangmu.1637.com/p1.html';
$ch = curl_init();
$timeout = 5;
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$file_contents = curl_exec($ch);
curl_close($ch);
}
/*········以上是代码区·········*/
//程序运行时间
$endtime = explode(' ',microtime());
$thistime = $endtime[0]+$endtime[1]-($starttime[0]+$starttime[1]);
$thistime = round($thistime,3);
echo "本网页执行耗时:".$thistime." 秒。";
总结:这四种方法在速度上并没有什么卵子区别。。。。