使用PEAR的Net_Ping Ping网站
Net_Ping是ping程序的PHP包装程序,它提供了一种对主机进行ping或检查站点是否已启动并正在运行的巧妙方法。要安装它,您只需要安装pear。完成后,您可以打开终端并输入以下内容来搜索PEARNet_Ping:
>pingsearchping
这将返回以下内容:
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.
您可以通过运行以下命令来安装Net_Ping:
>pearinstallNet_Ping
哪个应该产生以下输出。
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
您现在可以使用Net_Ping。要在代码中使用该类,您需要首先将其包括在内,此后,您需要获取Net_Ping对象的实例,以便您可以使用它。以下代码将创建一个可以使用的Net_Ping对象。
require_once "Net/Ping.php"; $ping = Net_Ping::factory();
要ping一个站点,您只需要运行该ping()功能。此函数采用一个参数,即您要ping的服务器的IP地址或名称。该函数返回一个Net_Ping_Result对象,该对象包含从ping返回的所有信息。
$results=$ping->ping('www.example.com');
这是print_r()此对象的输出。
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 )
您可以访问Net_Ping_Result中的不同属性,以查明ping发生了什么。也可以在_loss属性中为您确定ping丢失的百分比。
echo 'Transmitted: '.$results->_transmitted.'
'; echo 'Received: '.$results->_received.'
'; echo '% Loss: '.$results->_loss.'%
';
_round_trip参数包含一个数组,该数组详细说明了请求的最小,最大和平均时间。
您可能已经在我的原始示例中注意到,我只发出了2次ping。这是因为Net_Ping对象具有允许您在发出请求之前设置某些选项的功能。该函数被调用,setArgs()并以关联数组作为参数。要设置要发送的ping请求的数量,只需在发出ping请求之前使用以下代码即可。
$ping->setArgs(array('count'=>2));
您应该注意,不同的操作系统具有不同的选项,因此,有关选项的完整列表,请参见setArgs()PEAR网站上的Net_Ping::页面。
如果您只想检查主机以确保其仍处于活动状态,则可以使用该checkhost()功能。此ping()功能与函数的工作方式相同,但成功时将返回true,失败时将返回false。您可以checkhost()通过查看var_dump()输出来查看输出。
var_dump($ping->checkhost('example.com'));
该函数实际上是该函数的包装器ping(),但是将解析输出以确定ping请求是否有效。