We put up a Linux server replicating some part of our MSSQL server data using PHP. Since we have multiple ISPs connected at the HQ, I was having the idea of making sure that pulling data from HQ should continue as long as 1 line is up.
In the pass, we have to mess around with the PHP code to change the server IP, or change our DNS forwarder to redirect to a working line should the main line goes off.
So I told myself there must be a way to deal with the situation.
OK, I found a solution from the Net here.
The author uses a simple trick to see if there's reply from a HTTP socket connection. If there's a reply, then the server is alive, else, the server is off.
I took the code below:
// Function to check response time
$starttime = microtime(true);
$file = fsockopen ($domain, 80, $errno, $errstr, 10);
$stoptime = microtime(true);
$status = 0;
if (!$file) $status = -1; // Site is down
$status = ($stoptime - $starttime) * 1000;
$status = floor($status);
and added the below to my main PHP code, to decide if the server is accessible via a given line.
with the above, my code is now with failover function, even if is not really polished, it does work well.