0

图片:http: //i40.tinypic.com/2hodx55.png

我已经使用 Php 和 SNMP 构建了一个网络接口监视器,但是现在当我在 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']已更新但未使用,就像在您的代码段中一样。

这应该为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 回答