【问题标题】:how can i see url status code in PHP with out using curl option?如何在不使用 curl 选项的情况下在 PHP 中查看 url 状态代码?
【发布时间】:2012-07-07 01:39:49
【问题描述】:

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

只有我想允许包含状态码 200 的 url。

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

我用过下面的 curl 代码。

$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

【问题讨论】:

  • 如果你真的要在每次站点重新加载时检查每个页面的可用性,你的网站会很慢。
  • 为什么不直接使用站点地图构建器?我很确定有一些不错的工具。
  • @tradyblix,我的网站是多语言的。也在 drupal 中运行。

标签: php sitemap


【解决方案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

【讨论】:

  • 谢谢希望 :) 但它也需要很长时间。即,对于超过 400 个 url,它需要超过 4 分钟。
  • 使用$out = "HEAD /$page HTTP/1.1\r\n";怎么样?您是否还考虑了您尝试查询的网站的慢/快?
猜你喜欢
  • 1970-01-01
  • 2010-12-16
  • 1970-01-01
  • 2018-08-30
  • 1970-01-01
  • 2019-04-07
  • 1970-01-01
  • 2014-01-28
  • 2016-03-20
相关资源
最近更新 更多