Yep, I could tell them not to return the entire content for a HEAD request. 🙂
So this works for now for getting a page. At least until I try it on other servers.
$fp = fsockopen($sHost, $nPort, $errno, $errstr, 30);
if (!$fp)
{
echo "$errstr ($errno)<br />\n";
$sHeaders = NULL;
$sContent = NULL;
return;
}
$out = "GET $sPath HTTP/1.0\r\n";
$out .= "Host: $sHost\r\n";
$out .= "Connection: Close\r\n\r\n";
fwrite($fp, $out);
$sHeaders = '';
$sContent = '';
$bHeaderCompleted = false;
while (!feof($fp))
{
$tmp = fread($fp, READBUFSIZE);
if (!$bHeaderCompleted)
{
$nHeaderEnd = strpos($tmp, "\r\n\r\n");
if ($nHeaderEnd !== FALSE)
{
$sHeaders .= substr($tmp, 0, $nHeaderEnd);
$sContent .= substr($tmp, $nHeaderEnd + 4);
$bHeaderCompleted = TRUE;
}
else
{
$sHeaders .= $tmp;
}
}
else
{
$sContent .= $tmp;
}
}
fclose ($fp);
}