ping php phar

时间:2011-09-27 13:00:35

标签: php ping

我想使用此script来ping,而不使用exec();或类似的命令。

问题是我得到了这些错误:

  

严格标准:非静态方法Net_Ping :: factory()不应该   在C:\ xampp \ htdocs \ test.php中静态调用   3

     

严格标准:非静态方法Net_Ping :: _ setSystemName()应该   不能在第141行的C:\ xampp \ php \ PEAR \ Net \ Ping.php中静态调用

     

严格标准:非静态方法Net_Ping :: _ setPingPath()应该   不能在第143行的C:\ xampp \ php \ PEAR \ Net \ Ping.php中静态调用

     

严格标准:非静态方法PEAR :: isError()不应该   在C:\ xampp \ htdocs \ test.php中静态调用   4

test.php上的代码

<?php
require_once "Net/Ping.php";
$ping = Net_Ping::factory();
if (PEAR::isError($ping)) {
    echo $ping->getMessage();
} else {
    $ping->setArgs(array('count' => 2));
    var_dump($ping->ping('example.com'));
}
?>

2 个答案:

答案 0 :(得分:3)

没错,PEAR组件不适合E_STRICT。您拥有的代码是可以的,但PEAR代码并未说该方法是静态的,因此PHP将发出E_STRICT警告。这不是你真正可以改变的,但你可以选择忽略它,通过调整你的error_reporting设置。

<?php
// before PEAR stuff.
$errLevel = error_reporting( E_ALL );

// PEAR stuff.
require_once "Net/Ping.php";
$ping = Net_Ping::factory();
if (PEAR::isError($ping)) {
    echo $ping->getMessage();
} else {
    $ping->setArgs(array('count' => 2));
    $result = $ping->ping('example.com');
}

// restore the original error level.
error_reporting( $errLevel );
var_dump( $result );

答案 1 :(得分:1)

Here是我去年写的ping课程,当时我需要在没有PEAR的系统上执行此操作。

使用示例:

$ping = new ping();
if (!$ping->setHost('google.com')) exit('Could not set host: '.$this->getLastErrorStr());
var_dump($ping->send());