Php 接口B/w模块

Php 接口B/w模块,php,linux,networking,ubuntu,snmp,Php,Linux,Networking,Ubuntu,Snmp,图片: 我已经使用Php和SNMP构建了一个网络接口监视器,但是现在当我在localhost上执行它时,我看到我的图形一次又一次地转到原点(0)(请参见图片),并且Y轴上的速度是错误的。有时它会以百万计 请告诉我下面的代码有什么问题 <?php $int="wlan0"; session_start(); $rx0 =snmpget('localhost','public','.1.3.6.1.2.1.2.2.1.10.3'); $tx0 =s

图片:

我已经使用Php和SNMP构建了一个网络接口监视器,但是现在当我在localhost上执行它时,我看到我的图形一次又一次地转到原点(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'], ",").']}';


         ?>

我已经简化了代码片段下部的代码

  • 我假设
    $\u会话['rx']
    初始化为某个数组
  • $data
    已经消失-我希望它不会被进一步使用
  • $\u会话['tx']
    已更新,但未使用,就像您的代码段中一样
这将为
rx
生成干净的JSON输出。我看不出在你的版本或这个版本中零值是从哪里来的。检查输入(来自
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);

您还没有发布任何数据-我们如何知道它发生了什么?但是在这一行中,
$x=min(数组_键($_会话['rx'])
$x
将始终为零,因为您尚未为此数组分配任何键。你的
echo
语句看起来像是在生成JSON——最好创建一个合适的PHP关联数组,并使用
JSON\u encode()
@MikeW。我感谢你的回复,我附上了一个链接,链接到你可以在那里看到的图片O/p。那么,我如何才能真正分配一个键,而JSON不起作用呢?我如何才能更改为Php?您的图片显示了您的最终输出。据我所知,这准确地反映了您的输入,而您的原始数据是错误的。这里的代码也可能没有问题,错误的是生成图表的软件。您需要检查
snmpget()
中的原始数据和输出JSON中的零值。目前,我不知道它们是如何从这段代码中产生的。