Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Jak wyświetlić 2 zbiory danych na tym wykresie?
mariusz19901
post 25.03.2015, 18:58:15
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 17.03.2015

Ostrzeżenie: (0%)
-----


Witam
Mam problem jeśli chce wyświetlić na tym samym wykresie przepustowość łącza w obu kierunkach czyli tx i rx. W jednym kierunku nie ma problemu. Proszę o podpowiedź jak to zrobić. Poniżej skrypt który wykonuje prezentacje wykresu i obciążenia łącza.

CODE
<?

$int="eth0";
session_start();

$rx[] = @file_get_contents("/sys/class/net/$int/statistics/rx_bytes");
$tx[] = @file_get_contents("/sys/class/net/$int/statistics/tx_bytes");
sleep(1);
$rx[] = @file_get_contents("/sys/class/net/$int/statistics/rx_bytes");
$tx[] = @file_get_contents("/sys/class/net/$int/statistics/tx_bytes");

$tbps = $tx[1] - $tx[0];
$rbps = $rx[1] - $rx[0];

$round_rx=round($rbps/1024, 2);
$round_tx=round($tbps/1024, 2);

$time=date("U")."000";
$_SESSION['rx'][] = "[$time, $round_rx]";
$_SESSION['tx'][] = "[$time, $round_tx]";
$data['label'] = $int;
$data['data'] = $_SESSION['rx'];
# to make sure that the graph shows only the
# last minute (saves some bandwitch to)
if (count($_SESSION['rx'])>60)
{
$x = min(array_keys($_SESSION['rx']));
unset($_SESSION['rx'][$x]);
}

# json_encode didnt work, if you found a workarround pls write me
# echo json_encode($data, JSON_FORCE_OBJECT);

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


CODE
<?php
session_start();
session_destroy();
session_start();
?>
<html>
<head>
<script type="text/javascript" src="js/jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="js/jquery.flot.js"></script>

<script id="source" language="javascript" type="text/javascript">
$(document).ready(function() {
var options = {
lines: { show: true },
points: { show: true },
xaxis: { mode: "time" }
};
var data = [];
var placeholder = $("#placeholder");

$.plot(placeholder, data, options);

var iteration = 0;

function fetchData() {
++iteration;

function onDataReceived(series) {
// we get all the data in one go, if we only got partial
// data, we could merge it with what we already got
data = [ series ];

$.plot($("#placeholder"), data, options);
fetchData();
}

$.ajax({
url: "data.php",
method: 'GET',
dataType: 'json',
success: onDataReceived
});

}

setTimeout(fetchData, 1000);
});

</script>
</head>
<body>
<div id="placeholder" style="width:600px;height:300px;"></div>
</body>
</html>
Go to the top of the page
+Quote Post
freemp3
post 26.03.2015, 09:52:16
Post #2





Grupa: Zarejestrowani
Postów: 467
Pomógł: 77
Dołączył: 6.09.2008
Skąd: Miechów / Kraków

Ostrzeżenie: (0%)
-----


Tablica jaką powinna dostać biblioteka rysująca wykres powinna wyglądać w ten sposób:
Kod
data = [
seria1,
seria2,
...
serian
]

Tak więc Twoja tablica powinna zawierać dwie tablice z danymi: jedna z rx, a druga z tx.


--------------------
Niemożliwym jest stworzenie czegokolwiek idiotoodpornego, ponieważ idioci są wyjątkowo pomysłowi.

https://www.aroch.pl
https://themeforest.net/user/aroch
https://www.astroblog.aroch.pl
https://www.4geeks.pl
Go to the top of the page
+Quote Post
mariusz19901
post 29.03.2015, 16:41:42
Post #3





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 17.03.2015

Ostrzeżenie: (0%)
-----


W pliku data.php wpisywałem dwie tablice z dynami w taki sposób i żaden nie chce działać

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

oraz

echo '
{
label: "download",
data: ['.implode($_SESSION['rx'], ",").']
},
{
label: "upload",
data: ['.implode($_SESSION['tx'], ",").']
}
';
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 23.04.2024 - 07:40