如何使用curl选项在PHP中查看url状态代码?

时间:2012-07-06 15:08:23

标签: php sitemap

我想为我的网站创建网站地图。所以在创建站点地图之前,我想知道每个网址的状态代码。我使用curl选项来扣除状态代码。我的网站上有超过400个网址。如果我使用卷曲,它需要很长时间。

只有我想要允许包含状态代码200的网址。

请问任何人告诉我任何其他选项来扣除每个网址的状态代码。

我使用了下面的卷曲代码。

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, 1);  
curl_setopt($ch, CURLOPT_POSTFIELDS, $urlparam);  
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);  
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);  
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_TIMEOUT, 240);  

curl_exec($ch);
$curlcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
echo $curlcode;

reference link

1 个答案:

答案 0 :(得分:1)

几个月前,我遇到了同样的问题。我发现使用此代码示例访问我自己的页面状态代码要快得多:

<?php
//
// Checking the status of a web page - funmin.com
//

$server="www.YOUR_WEBSITE.com";
function sockAccess($page)
{
   $errno = "";
   $errstr = "";
   $fp = 0;
   global $server;
   $fp = fsockopen($server, 80, $errno, $errstr, 30);

   if ($fp===0)
   {
      die("Error $errstr ($errno)");
   }
   $out = "GET /$page HTTP/1.1\r\n";
   $out .= "Host: $server\r\n";
   $out .= "Connection: Close\r\n\r\n";

   fwrite($fp,$out);
   $content = fgets($fp);
   $code = trim(substr($content,9,4));
   fclose($fp);
   return intval($code);
}
?>

可在此处找到更多文档:http://www.forums.hscripts.com/viewtopic.php?f=11&t=4217