17.10. Checking if a Host Is Alive
Problem
You want to ping a host to see if it is still up and accessible from your location.
Solution
Use
PEAR’s
Net_Ping package:
require 'Net/Ping.php';
$ping = new Net_Ping;
if ($ping->checkhost('www.oreilly.com')) {
print 'Reachable';
} else {
print 'Unreachable';
}
$data = $ping->ping('www.oreilly.com');Discussion
The ping program tries to send a message from your machine to another. If everything goes well, you get a series of statistics chronicling the transaction. An error means that ping can’t reach the host for some reason.
On error, Net_Ping::checkhost( )
returns false,
and Net_Ping::ping( )
returns the constant
PING_HOST_NOT_FOUND. If there’s a
problem running the ping program (because
Net_Ping is really just a wrapper for the
program), PING_FAILED is returned.
If everything is okay, you receive an array similar to this:
$results = $ping->ping('www.oreilly.com');
foreach($results as $result) { print "$result\n"; }
PING www.oreilly.com (209.204.146.22) from 192.168.123.101 :
32(60) bytes of data.
40 bytes from www.oreilly.com (209.204.146.22): icmp_seq=0 ttl=239
time=96.704 msec
40 bytes from www.oreilly.com (209.204.146.22): icmp_seq=1 ttl=239
time=86.567 msec
40 bytes from www.oreilly.com (209.204.146.22): icmp_seq=2 ttl=239
time=86.563 msec
40 bytes from www.oreilly.com (209.204.146.22): icmp_seq=3 ttl=239
time=136.565 msec
40 bytes from www.oreilly.com (209.204.146.22): icmp_seq=4 ttl=239
time=86.627 msec
-- - www.oreilly.com ping ...Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access