PHP/URL이 살아있는지 확인


function check_alive($url)
{
  $url = @parse_url($url);
  if (!$url) {
    return false;
  }

  $url = array_map('trim', $url);
  $url['port'] = (!isset($url['port'])) ? 80 : (int)$url['port'];
  $path = (isset($url['path'])) ? $url['path'] : '';

  if ($path == '') {
    $path = '/';
  }
  $path .= (isset($url['query'])) ? "?$url[query]" : '';

  if (isset($url['host']) AND $url['host'] != gethostbyname($url['host'])) {
    if (PHP_VERSION >= 5) {
      $headers = get_headers("$url[scheme]://$url[host]:$url[port]$path");
    }
    else {
      $fp = fsockopen($url['host'], $url['port'], $errno, $errstr, 30);

      if(!$fp) {
        return false;
      }
      fputs($fp, "HEAD $path HTTP/1.1\r\nHost: $url[host]\r\n\r\n");
      $headers = fread($fp, 128);
      fclose($fp);
    }
    $headers = (is_array($headers)) ? implode("\n", $headers) : $headers;
    return preg_match('#^HTTP/.*\s+[(200|301|302)]+\s#i', $headers);
  }
  return false;
}

이 글에는 0 개의 댓글이 있습니다.