function isUrlOffline( $url )
{
// setup socket with timeout of 0.1 seconds
// return -1 for error ; false for offline
$urlpatt = '%http:\/\/([a-z-\.0-9]+)(:(\d+)){0,1}(.*)%i';
$am = array();
preg_match($urlpatt, $url, $am);
if (empty($am[1]))
{
return -1;
}
$address = gethostbyname($am[1]);
$service_port = empty($am[3]) ? 80 : $am[3];
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket < 0) return -1;
socket_set_block($socket);
socket_set_option(
$socket,SOL_SOCKET, SO_SNDTIMEO
, array("sec"=>0,"usec"=>100)
);
$result = socket_connect($socket, $address, $service_port);
if ($result < 0 ) return -1;
$in = "HEAD / HTTP/1.1\\r\\n";
$in .= "Host: " . $am[1] . "\\r\\n";
$in .= "Connection: Close\\r\\n\\r\\n";
socket_write($socket, $in, strlen($in));
$buf = "";
while ($out = socket_read($socket, 2048))
{
$buf .= $out;
}
socket_close($socket);
return preg_match("%HTTP/.+ 200 OK%",$buf);
}