サボテン??

WBOY
WBOYオリジナル
2016-06-23 14:22:301088ブラウズ

サボテンのデバッグ xampp

C:Documents and Settingsissdu>C:/xampp/php/php -q C:/xampp/htdocs/cacti/poller
.php --force --debug
09/25/2013 03:31:52 AM - POLLER:ポーラー[0] 注: ポーラー Int: '300'、スケジュールされた Ta
sk Int: '300'、最後からの時間: '118'、最大実行時間 '298'、ポーラー実行数: '1'
09/25/2013 03 :31:52 AM - POLLER: Poller[0] DEBUG: リモート プロセスを生成しようとしています
s [CMD: c:/xampp/php/php.exe, ARGS: -q "c:/xampp/htdocs/cacti/ cmd.php" 0 1]
1 つのポーラーのうち 1 つを待機しています。
1 つのポーラーのうち 1 つを待機しています。
1 つのポーラーのうち 1 つを待機しています。
1 つのポーラーのうち 1 つを待機しています。
1 つのポーラーのうち 1 つを待機しています。
1 つのポーラーのうち 1 つを待機しています。
1 つのポーラーのうち 1 つを待機しています。
1 つのポーラーのうち 1 つを待機しています。
1 つのポーラーのうち 1 つを待機しています。
1 つのポーラーのうち 1 つを待機しています。
1 つのポーラーのうち 1 つを待機しています。
1 つのポーラーのうち 1 つを待機しています。
1 つのポーラーのうち 1 つを待機しています。
1 つのポーラーのうち 1 つを待機しています。
1 つのポーラーのうち 1 つを待機しています。
1 つのポーラーのうち 1 つを待機しています。
1 つのポーラーのうち 1 つを待機しています。
1 つのポーラーのうち 1 つを待機しています。
1 つのポーラーのうち 1 つを待機しています。
1 つのポーラーのうち 1 つを待機しています。
1 つのポーラーのうち 1 つを待機しています。
1 つのポーラーのうち 1 つを待機しています。
1 つのポーラーのうち 1 つを待機しています。
1 件中 1 件のポーリングを待機しています。
1 件中 1 件のポーリングを待機しています。
1 件中 1 件のポーリングを待機しています。
1 件中 1 件のポーリングを待機しています。
1 つのポーラーのうち 1 つを待機しています。
1 つのポーラーのうち 1 つを待機しています。
1 つのポーラーのうち 1 つを待機しています。
1 つのポーラーのうち 1 つを待機しています。
1 つのポーラーのうち 1 つを待機しています。
1 つのポーラーのうち 1 つを待機しています。
1 つのポーラーのうち 1 つを待機しています。
1 つのポーラーのうち 1 つを待機しています。
1 つのポーラーのうち 1 つを待機しています。
1 つのポーラーのうち 1 つを待機しています。
1 つのポーラーのうち 1 つを待機しています。
1 つのポーラーのうち 1 つを待機しています。
1 つのポーラーのうち 1 つを待機しています。
1 つのポーラーのうち 1 つを待機しています。
1 つのポーラーのうち 1 つを待機しています。
1 つのポーラーのうち 1 つを待機しています。
1 つのポーラーのうち 1 つを待機しています。
1 つのポーラーのうち 1 つを待機しています。
OK u:0.01 s:0.03 r:8.19rs。
OK u:0.01 s:0.03 r:8.1909/25/2013 03:32:02 AM - システム統計: 時間:9.8750 メソッド
OK u:0.01 s:0.03 r:8.23reads:N/A ホスト数:2 プロセスあたりのホスト数: 2 データソース:29 RRDsPr
OK u:0.01 s:0.03 r:8.23rs。
OK u:0.01 s:0.03 r:8.25rs。
OK u:0.01 s:0.03 r:8.25rs。
OK u:0.01 s:0.03 r:8.25rs。
OK u:0.01 s:0.03 r:8.28rs。
OK u:0.01 s:0.03 r:8.34rs。
OK u:0.01 s:0.03 r:8.34rs。
OK u:0.01 s:0.03 r:8.72rs。
OK u:0.01 s:0.03 r:8.72rs。
OK u:0.01 s:0.03 r:8.72rs。
OK u:0.01 s:0.03 r:8.72rs。
OK u:0.01 s:0.03 r:8.72rs。
OK u:0.01 s:0.03 r:8.73rs。
OK u:0.01 s:0.03 r:8.75rs。
OK u:0.01 s:0.03 r:8.75rs。
ループ時間: 10.44llers。
睡眠時間: 289.36lers。
合計時間: 10.64llers。
1 つのポーラーのうち 1 つを待機しています。
C:Documents and Settingsisdu>
1 つのポーラーのうち 1 つを待機しています。
1 つのポーラーのうち 1 つを待機しています。
1 つのポーラーのうち 1 つを待機しています。
1 つのポーラーのうち 1 つを待機しています。
1 件中 1 件のポーリングを待機しています。
1 つのポーラーのうち 1 つを待機しています。
1 つのポーラーのうち 1 つを待機しています。
1 つのポーラーのうち 1 つを待機しています。
1 つのポーラーのうち 1 つを待機しています。
1 つのポーラーのうち 1 つを待機しています。
1 つのポーラーのうち 1 つを待機しています。
1 つのポーラーのうち 1 つを待機しています。
1 つのポーラーのうち 1 つを待機しています。
1 つのポーラーのうち 1 つを待機しています。
1 つのポーラーのうち 1 つを待機しています。
1 つのポーラーのうち 1 つを待機しています。
1 つのポーラーのうち 1 つを待機しています。
1 つのポーラーのうち 1 つを待機しています。
1 つのポーラーのうち 1 つを待機しています。
1 つのポーラーのうち 1 つを待機しています。
1 つのポーラーのうち 1 つを待機しています。
1 つのポーラーのうち 1 つを待機しています。
1 つのポーラーのうち 1 つを待機しています。
1 つのポーラーのうち 1 つを待機しています。
1 つのポーラーのうち 1 つを待機しています。
1 つのポーラーのうち 1 つを待機しています。
1 つのポーラーのうち 1 つを待機しています。
1 つのポーラーのうち 1 つを待機しています。
1 つのポーラーのうち 1 つを待機しています。
1 つのポーラーのうち 1 つを待機しています。
1 つのポーラーのうち 1 つを待機しています。
1 つのポーラーのうち 1 つを待機しています。
1 つのポーラーのうち 1 つを待機しています。
1 つのポーラーのうち 1 つを待機しています。
1 つのポーラーのうち 1 つを待機しています。
1 つのポーラーのうち 1 つを待機しています。
1 つのポーラーのうち 1 つを待機しています。
1 つのポーラーのうち 1 つを待機しています。
1 つのポーラーのうち 1 つを待機しています。
1 つのポーラーのうち 1 つを待機しています。
OK u:0.01 s:0.03 r:3.36W
1 つのポーラーのうち 1 つを待機しています。
1 つのポーラーのうち 1 つを待機しています。
1 つのポーラーのうち 1 つを待機しています。
1 つのポーラーのうち 1 つを待機しています。
1 つのポーラーのうち 1 つを待機しています。
OK u:0.01 s:0.03 r:3.45
1 つのポーラーのうち 1 つを待機しています。
1 つのポーラーのうち 1 つを待機しています。
1 つのポーラーのうち 1 つを待機しています。
エラー: 十分な引数がありません。
1 つ中 1 つのポーリングを待機しています。
1 つのポーラーのうち 1 つを待機しています。
1 つのポーラーのうち 1 つを待機しています。
OK u:0.01 s:0.03 r:4.421 個中 1 個のポーリングを待機しています。

1 つのポーラーのうち 1 つを待機しています。
1 つのポーラーのうち 1 つを待機しています。
1 つのポーラーのうち 1 つを待機しています。
OK u:0.01 s:0.03 r:4.50
1 つのポーラーのうち 1 つを待機しています。
OK u:0.01 s:0.03 r:4.511 個中 1 個のポーリングを待機しています。

??????有解?方法??
厳格な標準: C:xampphtdocscactilibping.php オンライン 382 では変数のみが参照によって渡される必要があります。

厳格な標準: C では変数のみが参照によって渡される必要があります: xampphtdocscactilibping.php オンライン 382

厳格な標準: C:xampphtdocscactilibping.php オンライン 382 で変数のみを参照渡しする必要があります


回复讨论(解决方案)

那要看 C:xampphtdocscactilibping.php 第382 行是怎么写的了

/*此?382行 get the socket response */
switch(socket_select($r = array($this->socket), $w = NULL, $f = NULL, $to_sec, $to_usec)) {
ケース 2:
/* 接続が拒否されました */
$error = "拒否されました";
休憩;
ケース 1:
/* 終了時刻を取得*/
$this->time = $this->get_time($this->precision);

/* get packet response */
$code = @socket_recv($this->socket, $this->reply, 256, 0);

/* 該当する場合はエラーを取得します*/
$err = socket_last_error($this->socket);

/* 返信メッセージを設定します */
$this->ping_status = $this->time * 1000;
$this->ping_response = "UDP Ping 成功 (" . $this->time*1000 . " ms)";

$this->close_socket();
true を返します。
ケース 0:
/* タイムアウト */
$error = "タイムアウト";
休憩;
}

$retry_count++;
}
} else {
$this->ping_response = "宛先アドレスが指定されていません";
$this->ping_status = "ダウン";

false を返します。
}
} /* end ping_udp */

function ping_tcp() {
/* ホストは空白以外である必要があります */
if ($this->host["hostname"]) {
/* 変数を初期化する */
$this->ping_status = 「ダウン」;
$this->ping_response = "デフォルト";

/* タイムアウト変数を確立します */
$to_sec = floor($this->timeout/1000);
$to_usec = ($this->timeout%1000)*1000;

/* snmp_transport を指定している場合はホスト名をクリーンアップします*/
$this->host["hostname"] = str_replace("tcp:", "", strto lower($this->host["hostname"])) ;
$this->host["hostname"] = str_replace("udp:", "", strto lower($this->host["hostname"]));

/* ホストの IP アドレスを決定する */
if ($this->is_ipaddress($this->host["hostname"])) {
$host_ip = $this->host["hostname"] ;
}else{
$host_ip = gethostbyname($this->host["hostname"]);

if (!$this->is_ipaddress($host_ip)) {
cacti_log("警告: TCP Ping エラー: gethostbyname failed for " . $this->host["hostname"]);
$this->response = 「TCP Ping Error: gethostbyname failed for 」 。 $this->host["ホスト名"];
false を返します。
}
}

/* ソケットを初期化します */
if (substr_count($host_ip,":") > 0) {
if (define("AF_INET6")) {
$this->socket = socket_create (AF_INET6、SOCK_STREAM、SOL_TCP);
}else{
$this->ping_response = 「PHP バイナリ は IPv6 をサポートしていません」;
$this->ping_status = "ダウン";
cacti_log("警告: IPv6 ホストが検出されました。PHP バージョンは IPv6 をサポートしていません");

false を返します。
}
}else{
$this->socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
}

while (1) {
/* set start time */
$this->start_time();

/* 即時復帰を許可します */
socket_set_nonblock($this->socket);
@socket_connect($this->socket, $host_ip, $this->port);
socket_set_block($this->socket);

switch(socket_select($r = array($this->socket), $w = array($this->socket), $f = array($this->socket), $to_sec, $to_usec )){
ケース 2:
/* 接続が拒否されました */
$this->time = $this->get_time($this->precision);

if (($this->time*1000) <= $this->timeout) {
$this->gt;ping_response = "TCP Ping 接続が拒否されました (" . $this->time*1000 . " MS)";
$this->ping_status = $this->time*1000;
}

$this->close_socket();

true を返します。 /*「接続が拒否されました」の意味: ホストは生きています (そうでない場合は ping がタイムアウトします) */
ケース 1:
/* 接続されているので、合計時間を計算して返します */
$this->time = $this-> ;get_time($this->精度);

if (($this->time*1000) <= $this->timeout) {
$this->gt;ping_response = "TCP Ping Success (" . $this->time*1000 . " MS)";
$this->ping_status = $this->time*1000;
}

$this->close_socket();

true を返します。
ケース 0:
/* タイムアウト */
$this->ping_response = "TCP ping タイムアウト";
$this->ping_status = "ダウン";

$this->close_socket();

false を返します。
}
}
} else {
$this->ping_response = "宛先アドレス が指定されていません";
$this->ping_status = "ダウン";

false を返します。
}
} /* end ping_tcp */

function ping($avail_method = AVAIL_SNMP_AND_PING, $ping_type = PING_ICMP, $timeout=500, $retries=3) {
/* 変数の初期化 */
$ping_ ping = true;
$ping_snmp = true;

$this->ping_status = 「ダウン」;
$this->ping_response = 「設定により ping が実行されません。」;
$this->snmp_status = "ダウン";
$this->snmp_response = 「設定または ping の結果により、SNMP は実行されませんでした。」;
$this->avail_method = $avail_method;

/* 可用性のための短絡 none */
if ($avail_method == AVAIL_NONE) {
$this->ping_status = "0.00";
true を返します。
}

if ((!function_exists("socket_create")) && ($avail_method != AVAIL_NONE)) {
$avail_method = AVAIL_SNMP;
cacti_log("警告: PHP ではソケットのサポートが有効になっていません。SNMP ping に戻ります");
}

if (($retries <= 0) || ($retries > 5)) {
$this->retries = 2;
}else{
$this->retries = $retries;
}

if ($timeout $this->timeout = 500;
}else{
$this->timeout = $timeout;
}

/* 小数精度 は 0.0000 */
$this->precision = 5;

/* snmp ping が 最低限 */
$ping_result = false; で選択されています。
$snmp_result = false;

/* icmp/udp ping test */
if (($avail_method == AVAIL_SNMP_AND_PING) ||
($avail_method == AVAIL_SNMP_OR_PING) ||
($avail_method == AVAIL_PING)) {
if ($ping_type == PING_ICMP) {
$ping_result = $this->ping_icmp();
}else if ($ping_type == PING_UDP) {
$ping_result = $this->ping_udp();
}else if ($ping_type == PING_TCP) {
$ping_result = $this->ping_tcp();
}
}

/* snmp テスト */
if (($avail_method == AVAIL_SNMP_OR_PING) && ($ping_result == true)) {
$snmp_result = true;
$this->snmp_status = 0.000;
}else if (($avail_method == AVAIL_SNMP_AND_PING) && ($ping_result == false)) {
$snmp_result = false;
}else if (($avail_method == AVAIL_SNMP) || ($avail_method == AVAIL_SNMP_AND_PING)) {
if (($this->host["snmp_community"] == "") && ($this-> host["snmp_version"] != 3)) {
/* コミュニティ文字列なしの snmp バージョン 1/2 は、SNMP テストが成功すると仮定します
下位互換性の問題により */
$snmp_result = true;
$this->snmp_status = 0.000;
}else{
$snmp_result = $this->ping_snmp();
}
}

switch ($avail_method) {
case AVAIL_SNMP_OR_PING:
if (($this->host["snmp_community"] == "") && ($this->host["snmp_version"] ! = 3)) {
if ($ping_result) {
return true;
}else{
return false;
}
}elseif ($snmp_result) {
return true;
}elseif ($ping_result) {
return true;
}else{
return false;
}
case AVAIL_SNMP_AND_PING:
if (($this->host["snmp_community"] == "") && ($this->host["snmp_version"] != 3)) {
if ($ping_result ) {
true を返します。
}else{
return false;
}
}elseif (($snmp_result) && ($ping_result)) {
return true;
}else{
return false;
}
case AVAIL_SNMP:
if ($snmp_result) {
return true;
}else{
return false;
}
case AVAIL_PING:
if ($ping_result) {
return true;
}else{
return false;
}
デフォルト:
false を返します。
}
} /* end_ping */

function is_ipaddress($ip_address = '') {
/* ipv4/v6 を確認する */
if (substr_count($ip_address, ":")) {
/* 圧縮されたドットformat */
if (substr_count($ip_address, "::")) {
$ip_address = str_replace("::", ":", $ip_address);
$segments = explode(":", $ip_address);
}else{
$segments = explode(":", $ip_address);

if (sizeof($segments) != 8) {
/* 8 セグメントである必要があります */
return false;
}
}

$i = 0;
foreach ($segments as $segment) {
$i++;

if ((trim($segment) == "") && ($i == 1)) {
続ける;
}elseif (!is_numeric("0x" . $segment)) {
return false;
}
}

true を返します。
}else if (strlen($ip_address) <= 15) {
$octets = explode('.', $ip_address);

$i = 0;

if (count($octets) != 4) {
return false;
}

foreach($octet as $octet) {
if ($i == 0 || $i == 3) {
if(($octet < 0) || ($octet > 255)) {
false を返す;
}
}else{
if(($octet < 0) || ($octet > 255)) {
return false;
}
}

$i++;
}

true を返します。
}else{
return false;
}
}
}

?>

最初に回避できます
socket_select($r = array($this->socket), $w = NULL, $f = NULL, $to_sec, $to_usec)
書き込み
@socket_select($r = array($ this ->socket), $w = NULL, $f = NULL, $to_sec, $to_usec)
error_reporting(E_ALL ^ E_STRICT); もできます
プロトタイプ
intソケット_select (array &read, array &write) , array &excel, int tv_sec [, int tv_usec] )
最初の 3 つのパラメーターが参照によって渡されていることがわかります
php5.3 以降、参照はエンティティから生成される必要があります。そうしないとエラーが報告されます
それ将来接続の回避が機能しなくなる可能性は否定できません
正しい 書き込み方法は
$r = array($this->socket);
$f = NULL; $r, $w, $f, $to_sec, $to_usec)



??ボード、
??は解決されました、

ありがとうございます!

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。