tetsunosukeのnotebook

tetsunosukeのメモです

HTTP HEADを投げて結果を取る

<?php

require_once('HTTP.php'); // for absoluteURI

head("http://example.com");

    function head($url, $timeout = 10)
    {
        $p = parse_url($url);
        if (!isset($p['scheme'])) {
            $p = parse_url(HTTP::absoluteURI($url));
        } elseif ($p['scheme'] != 'http') {
            return false;
        }

        $port = isset($p['port']) ? $p['port'] : 80;

        if (!$fp = @fsockopen($p['host'], $port, $eno, $estr, $timeout)) {
            return false;
        }

        $path  = !empty($p['path']) ? $p['path'] : '/';
        $path .= !empty($p['query']) ? '?' . $p['query'] : '';

        fputs($fp, "HEAD $path HTTP/1.0\r\n");
        fputs($fp, 'Host: ' . $p['host'] . ':' . $port . "\r\n");
        fputs($fp, "Connection: close\r\n\r\n");

        while ($line = fgets($fp, 4096)) {
            echo $line;
        }
        fclose($fp);
    }
?>

内部的にechoになってるのがカコワルイけど。