Ping server med php script
Hej eksperterJeg har følgende situation:
På en hjemmeside, har jeg en iframe, hvori jeg gerne vil have vist en log in box fra en secure server. Serveren er imidlertid nede indimellem pga. back-up, og i disse perioder, vil jeg gerne have, at der i stedet for log in boxen kommer meddelelse herom.
Jeg har et script, der virker ok til dette formål (jf. nedenfor).
Der er dog det problem, at hvis serveren er helt slukket, fx pga. strømafbrydelse eller server-nedbrud, så viser min iframe en 404-side. Det vil jeg selvfølgelig gerne undgå. Kan det lade sig gøre?
Her er mit script:
<?php
class user_misc {
public function renderLogin() {
function isOnline($url) {
if (!$url_info = parse_url($url)) {
return false;
}
switch ($url_info['scheme']) {
case 'https':
$scheme = 'ssl://';
$port = 443;
break;
case 'http':
default:
$scheme = '';
$port = 80;
}
$data = "";
$fid = @fsockopen($scheme . $url_info['host'], $port, $errno, $errstr, 5);
if ($fid) {
fputs($fid, 'HEAD ' . (isset($url_info['path'])? $url_info['path']: '/') . (isset($url_info['query'])? '?' . $url_info['query']: '') . " HTTP/1.0\r\n" .
"Connection: close\r\n" .
'Host: ' . $url_info['host'] . "\r\n\r\n");
while (!feof($fid)) {
$data .= @fgets($fid, 128);
}
fclose($fid);
return !empty($data);
} else {
return false;
}
}
if(isOnline('https://mysecure.server.dk'))
return '<div style="vertical-align:top;"><iframe src="https://mysecure.server.dk/portal/lgi.html" width="116" scrolling=no frameborder="0" height="88" marginheight="0" marginwidth="0" style="margin-bottom:4px;"></iframe></div>';
else
return '<p>Der er i øjeblikket ikke adgang til<br />serveren på grund af backup.</p>';
}
}
?>