0

画像: http: //i40.tinypic.com/2hodx55.png

Php と SNMP を使用して Network Interface Monitor を構築しましたが、localhost で実行すると、グラフが何度も origin(0) に移動し (画像を参照してください)、Y 軸の速度も間違っています。時にはそれは数百万と数百万になります。

以下のコードの問題点を誰か教えてください

    <?php
     $int="wlan0";


       session_start();

  $rx0 =snmpget('localhost','public','.1.3.6.1.2.1.2.2.1.10.3');

 $tx0 =snmpget('localhost','public','.1.3.6.1.2.1.2.2.1.16.3');

  sleep(5);

 $rx1 =snmpget('localhost','public','.1.3.6.1.2.1.2.2.1.10.3');

 $tx1 =snmpget('localhost','public','.1.3.6.1.2.1.2.2.1.16.3');


   $rx0 = substr($rx0, 11);
   $tx0 = substr($tx0, 11);
   $rx1 = substr($rx1, 11);
   $tx1 = substr($tx1, 11);

   $tBps = $tx1 - $tx0;
   $rBps = $rx1 - $rx0;

   $round_rx=$rBps;
   $round_tx=$tBps;



   $time=date("U")."000";


$_SESSION['rx'][] = "[$time, $round_rx]";   
 $_SESSION['tx'][] = "[$time, $round_tx]";
  $data['label'] = $int;
     $data['data'] = $_SESSION['rx'];

          if (count($_SESSION['rx'])>60)
    {
    $x = min(array_keys($_SESSION['rx']));
     unset($_SESSION['rx'][$x]);

    }




        echo '{"label":"'.$int.'","data":['.implode($_SESSION['rx'], ",").']}';


         ?>
4

1 に答える 1

0

スニペットの下部にあるコードを簡略化しました。

  • $_SESSION['rx']どこかの配列に初期化されていると思います。
  • $data行ってしまった - これ以上使用されないことを願っています。
  • $_SESSION['tx']スニペットにあったように、更新されていますが、それ以外は使用されていません。

これにより、 のクリーンな JSON 出力が生成されrxます。あなたのバージョンまたはこれでゼロ値がどこから来ているのかわかりません。これへの入力 (からの生の値snmpget()) と出力 JSON 文字列の両方を確認してください。

$_SESSION['rx'][] = array($time, $round_rx);   
$_SESSION['tx'][] = array($time, $round_tx);

// retaining just the 60 most recent entries.
if (count($_SESSION['rx'])>60) {
  array_shift($_SESSION['rx']);
}

$rxdata = array("label"=>$int, "data"=>$_SESSION['rx']);
echo json_encode($rxdata);
于 2013-07-02T07:46:54.630 に答える