PHP + CURL http响应头

时间:2014-08-26 14:47:29

标签: php curl

我目前正在尝试配置CURL&在线发现的PHP函数在调用时检查HTTP响应头是否在200-300范围内以确定网页是否已启动。一旦使用下面的代码(不是函数本身,而是if语句等)对单个网站运行,这是成功的。该函数返回true或false,具体取决于HTTP Response标头的范围:

$page = "www.google.com";
$page = gzdecode($page); 
if (Visit($page))
{
   echo $page;
   echo " Is OK <br>";       
}
else
{
     echo $page;
     echo "  Is DOWN <br>";       
}

然而,当通过使用for for循环运行存储在脚本中的URL数组时,它会将列表中的每个网页报告为向下,尽管代码是相同的条,当然添加了for循环。

有谁知道这个问题可能是什么?

编辑 - 添加访问功能 我很抱歉,没有充分思考。 访问功能如下:

function Visit($url){
   $agent = "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)";$ch=curl_init();
   curl_setopt ($ch, CURLOPT_URL,$url );
   curl_setopt($ch, CURLOPT_USERAGENT, $agent);
   curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
   curl_setopt ($ch,CURLOPT_VERBOSE,false);
   curl_setopt($ch, CURLOPT_TIMEOUT, 5);
   curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, FALSE);
   curl_setopt($ch,CURLOPT_SSLVERSION,3);
   curl_setopt($ch,CURLOPT_SSL_VERIFYHOST, FALSE);
   $page=curl_exec($ch);
   //echo curl_error($ch);
   $httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
   curl_close($ch);
   if($httpcode>=200 && $httpcode<310) return true;
   else return false;
}

如上所述,foreach循环如下所示:

foreach($Urls as $URL)
{
$page = $URL;
$page = gzdecode($page);
if (Visit($page))

访问部分的if循环与之前相同。

1 个答案:

答案 0 :(得分:0)

$page = $URL;
$page = gzdecode($page);

您为什么要尝试解压缩非压缩网址?假设您真的要解压缩从URL返回的内容,当您告诉客户端不支持压缩时,为什么远程服务器服务器会压缩它?为什么要抓取整个页面来查看标题?

您在此处向我们展示的代码从未起作过