Archive

Posts Tagged ‘website’

Ping A Website Using PEAR’s Net_Ping

April 22nd, 2009 No comments

Net_Ping is a PHP wrapper for the ping program and provides a neat way pinging a host or checking if a site is up and running. To install it you just need to have pear installed. Once that is done you can do a search for PEAR Net_Ping by opening a terminal and typing:

>ping search ping

This will return the following:

Retrieving data...0%.MATCHED PACKAGES, CHANNEL PEAR.PHP.NET:
=======================================
PACKAGE           STABLE/(LATEST) LOCAL
Net_Ping          2.4.4 (stable)        Execute ping
Services_Pingback 0.2.2 (alpha)         A Pingback User-Agent class.

You can install Net_Ping by running the following:

H:>pear install Net_Ping

Which should produce the following output.

downloading Net_Ping-2.4.4.tgz ...
Starting to download Net_Ping-2.4.4.tgz (9,563 bytes)
.....done: 9,563 bytes
install ok: channel://pear.php.net/Net_Ping-2.4.4

You can now use Net_Ping. To use the class in your code you need to include it first, after this you need to get an instance of the Net_Ping object so that you can work with it. The following code will create a Net_Ping object that you can work with.

require_once "Net/Ping.php";
$ping = Net_Ping::factory();

To ping a site you just need to run the ping() function. This function takes a single parameter which is the IP address or the name of the server you want to ping. The function returns a Net_Ping_Result object that contains all of the information returned from the ping.

$results = $ping->ping('www.example.com');

Here is a print_r() output of this object.

Net_Ping_Result Object
(
    [_icmp_sequence] => Array
        (
            [1] => 176
            [2] => 177
        )
 
    [_target_ip] => 208.77.188.166
    [_bytes_per_request] => 32
    [_bytes_total] => 64
    [_ttl] => 54
    [_raw_data] => Array
        (
            [0] => 
            [1] => Pinging www.example.com [208.77.188.166] with 32 bytes of data:
            [2] => 
            [3] => Reply from 208.77.188.166: bytes=32 time=176ms TTL=54
            [4] => Reply from 208.77.188.166: bytes=32 time=177ms TTL=54
            [5] => 
            [6] => Ping statistics for 208.77.188.166:
            [7] =>     Packets: Sent = 2, Received = 2, Lost = 0 (0% loss),
            [8] => Approximate round trip times in milli-seconds:
            [9] =>     Minimum = 176ms, Maximum = 177ms, Average = 176ms
        )
 
    [_sysname] => windows
    [_round_trip] => Array
        (
            [min] => 176
            [max] => 177
            [avg] => 176
        )
 
    [_transmitted] => 2
    [_received] => 2
    [_loss] => 0
)

You can access the different properties within the Net_Ping_Result to find out what happened with the ping. The percentage of pings lost is also worked out for you in the _loss property.

echo '<p>Transmitted: '.$results->_transmitted.'</p>';
echo '<p>Received: '.$results->_received.'</p>';
echo '<p>% Loss: '.$results->_loss.'%</p>';

The _round_trip parameter contains an array that details the minimum, maximum and average times for the requests.

You might have noticed in my original example that I only sent out 2 pings. This is because the Net_Ping object has a function that allows you to set certain options before you make the request. This function is called setArgs() and takes an associative array as the argument. To set the number of ping requests to be sent out just use the following line of code before you make your ping request.

$ping->setArgs(array('count' => 2));

You should be aware that different operating systems have different options, so for a full list of options please see the Net_Ping::setArgs() page on the PEAR website.

If you just want to check the host to make sure it is still active you can use the checkhost() function. This works in the same way as the ping() function, but will return true on success and false on failure. You can see the output of checkhost() by viewing the var_dump() output.

var_dump($ping->checkhost('example.com'));

This function is really a wrapper for the ping() function, but will parse the output to determine if the ping request worked or not.

Categories: PHP Tags: , , , , ,

Planet PHP

October 2nd, 2008 No comments

Planet PHP is a feed aggregator blog specifically for PHP related blogs. There are a good number of blogs that the site uses to update with so there is always plenty of stuff going up on the site. The site is not run by PHP, and is an independent project run by Christian Stocker and Tobias Schlitt.

Manage MySQL Databases With phpMyAdmin

The good thing about this site is that it saves having to go through all of the blogs in turn to see what is interesting in the world of PHP. If you run a PHP blog you can submit your site to the list and get your articles included in the updates.

PHP Website Function Lookup

January 8th, 2008 No comments

Those of you who have coded in PHP must have looked at the PHP website at some point, even if it was just to down load the latest version, or to look up a function reference.

What most people don’t realise is that there is a really easy way to go straight to the page that you want without having to mess around with the tetchy search engine on the PHP site.

Lets say you wanted to know about the function phpinfo(). This is a debugging function that displays everything you could possible imagine about the PHP environment and is usually used by people who are just starting out with the language as it prints a lot of stuff to the screen.

To look at the reference for the phpinfo() function you could go to the following URL.
http://uk3.php.net/manual/en/function.phpinfo.php

However, if you just type in www.php.net and the name of the function it will take you to the correct page. So for the phpinfo() function we would type the following.
www.php.net/phpinfo

The shorter URL takes us to the same page and is much easier to type in or bookmark.

This works with any function or language construct, and even if you type in a function that isn’t there you will just be presented with a search results page so the site will always try to get you the content you are looking for.