Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
PHP ping script
<?php
/*
*
* Use the examples below to add your own servers. Coded by clone1018 [?]
*
*/
$title = "Simple Server Status"; // website's title
$servers = array(
'Google Web Search' => array(
'ip' => 'google.com',
'port' => 80,
'info' => 'Hosted by The Cloud',
'purpose' => 'Web Search'
),
'Example Down Host' => array(
'ip' => 'example.com',
'port' => 8091,
'info' => 'ShittyWebHost3',
'purpose' => 'No purpose'
)
);
if (isset($_GET['host'])) {
$host = $_GET['host'];
if (isset($servers[$host])) {
header('Content-Type: application/json');
$return = array(
'status' => test($servers[$host])
);
echo json_encode($return);
exit;
} else {
header("HTTP/1.1 404 Not Found");
}
}
$names = array();
foreach ($servers as $name => $info) {
$names[$name] = md5($name);
}
?>
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title><?php echo $title; ?></title>
<link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootswatch/2.3.2/cosmo/bootstrap.min.css">
<link rel="stylesheet" href="//netdna.bootstrapcdn.com/font-awesome/3.2.1/css/font-awesome.min.css">
<style type="text/css">
/* Custom Styles */
</style>
</head>
<body>
<div class="container">
<h1><?php echo $title; ?></h1>
<table class="table">
<thead>
<tr>
<th></th>
<th>Name</th>
<th>Host</th>
<th>Purpose</th>
</tr>
</thead>
<tbody>
<?php foreach ($servers as $name => $server): ?>
<tr id="<?php echo md5($name); ?>">
<td><i class="icon-spinner icon-spin icon-large"></i></td>
<td class="name"><?php echo $name; ?></td>
<td><?php echo $server['info']; ?></td>
<td><?php echo $server['purpose']; ?></td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</div>
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
<script type="text/javascript">
function test(host, hash) {
// Fork it
var request;
// fire off the request to /form.php
request = $.ajax({
url: "<?php echo basename(__FILE__); ?>",
type: "get",
data: {
host: host
},
beforeSend: function () {
$('#' + hash).children().children().css({'visibility': 'visible'});
}
});
// callback handler that will be called on success
request.done(function (response, textStatus, jqXHR) {
var status = response.status;
var statusClass;
if (status) {
statusClass = 'success';
} else {
statusClass = 'error';
}
$('#' + hash).removeClass('success error').addClass(statusClass);
});
// callback handler that will be called on failure
request.fail(function (jqXHR, textStatus, errorThrown) {
// log the error to the console
console.error(
"The following error occured: " +
textStatus, errorThrown
);
});
request.always(function () {
$('#' + hash).children().children().css({'visibility': 'hidden'});
})
}
$(document).ready(function () {
var servers = <?php echo json_encode($names); ?>;
var server, hash;
for (var key in servers) {
server = key;
hash = servers[key];
test(server, hash);
(function loop(server, hash) {
setTimeout(function () {
test(server, hash);
loop(server, hash);
}, 6000);
})(server, hash);
}
});
</script>
</body>
</html>
<?php
/* Misc at the bottom */
function test($server) {
$socket = @fsockopen($server['ip'], $server['port'], $errorNo, $errorStr, 3);
if ($errorNo == 0) {
return true;
} else {
return false;
}
}
function in_array_r($needle, $haystack, $strict = false) {
foreach ($haystack as $item) {
if (($strict ? $item === $needle : $item == $needle) || (is_array($item) && in_array_r($needle, $item, $strict))) {
return true;
}
}
return false;
}
?>
@krimtsev

This comment has been minimized.

Copy link

@krimtsev krimtsev commented Jul 24, 2015

Thx!

@robthornley

This comment has been minimized.

Copy link

@robthornley robthornley commented Aug 5, 2015

Thx used this to generate a live report of our printer fleet

@pavs

This comment has been minimized.

Copy link

@pavs pavs commented Aug 21, 2015

I am a noob programmer myself, I could use some advice on how I could re-purpose this code to do ping without specifying any ports. Because the ips I want to see if they are live or not don't have any services running. Only way to see if they are up is to ping or traceroute.

@SkippTekk

This comment has been minimized.

Copy link

@SkippTekk SkippTekk commented Oct 19, 2015

Hey man, i got this Script working on my website, but i also added in LINKS but when ever it "refreshes" the Links that i provided in there VANISH. i don't know why or can't seem to figure it out. but could you possibly assist me on this?

@mixpix405

This comment has been minimized.

Copy link

@mixpix405 mixpix405 commented Nov 9, 2015

Attempting to convert this from it's current "test" function of fsockopen to ping, so that I can test servers with no services running - anyone able/willing to help me out?

@DBJDBJ

This comment has been minimized.

Copy link

@DBJDBJ DBJDBJ commented Mar 16, 2016

This is not a ping implementation. This is server-is-alive...

@paskanadi

This comment has been minimized.

Copy link

@paskanadi paskanadi commented Apr 16, 2016

how to combine with MYSQL database
paskan.pas@gmail.com

@hbosko

This comment has been minimized.

Copy link

@hbosko hbosko commented Oct 24, 2016

Hi,
Thanks for avesome script.
Its posible to load arrays with separate XML file?

@Tuliol

This comment has been minimized.

Copy link

@Tuliol Tuliol commented Mar 11, 2017

Hi, How to combine with a mysql database, thank you very much

@Paulo-dev

This comment has been minimized.

Copy link

@Paulo-dev Paulo-dev commented Dec 10, 2017

thx :)

@OrlandoHC

This comment has been minimized.

Copy link

@OrlandoHC OrlandoHC commented Feb 16, 2019

Good script.

@Azimjon125

This comment has been minimized.

Copy link

@Azimjon125 Azimjon125 commented Aug 30, 2021

help me? pls

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment