【问题标题】:ping with php phar用 php phar ping
【发布时间】:2011-09-27 13:00:34
【问题描述】:

我想用这个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'));
}
?>

【问题讨论】:

标签: php ping


【解决方案1】:

没有错,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 );

【讨论】:

    【解决方案2】:

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

    示例用法:

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

    【讨论】:

    • 它是否使用 exec() 或类似的,如果不是,是什么?
    • 不,它不执行或类似,它使用 PHP sockets extension
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-05
    • 2013-08-21
    • 2014-12-27
    • 2012-02-09
    • 1970-01-01
    • 2012-01-02
    相关资源
    最近更新 更多