Jarosław Haczyk wrote:
Witam Mam małą przerobke lms, aby wyswietlal staty, ala mrtg, rrdtool , itp. narazie tylko dobowe Dane pobiera z bazy lms'a, czyli tam musza byc wrzucane statystyki ruchu.
Jak to wyglada -> http://starlan.pl/lms/lms-graph.JPG
coś takiego możnaby wrzucić na stałe do LMSa, ale mam parę uwag:
0. dobrze gdybyś wszystkie zmiany podsyłał w jednym pliku diff 1. $sql_query="SELECT customers.lastname,customers.name FROM customers LEFT JOIN nodes ON (customers.id = nodes.ownerid) WHERE nodes.id=?";
$user=$DB->GetRow($sql_query,array($nodeid)); $node=$DB->GetRow('SELECT nodes.name,inet_ntoa(nodes.ipaddr) AS adres FROM nodes WHERE id=?',array($nodeid));
to można sprowadzić do jednego zapytania
2. $upl_maks = $DB->GetOne('SELECT MAX(upload) FROM stats WHERE nodeid=? AND dt>?', array($nodeid, $currenttime-$quantum)); $upl_maks = (int)($upl_maks/300); $dwl_maks = $DB->GetOne('SELECT MAX(download) FROM stats WHERE nodeid=? AND dt>?', array($nodeid, $currenttime-$quantum));
to także powinno być jednym zapytaniem zrobione
3. for ($i=$currenttime-$quantum;$i<$currenttime;$i=$i+ceil($quantum/400)) { if($stats = $DB->GetAll('SELECT download,upload,dt FROM stats WHERE nodeid=? AND dt<? AND dt>?', array($nodeid, $i+ceil($quantum/400), $i))) { foreach ($stats as $idx => $badanie) {
taka konstrukcja jest nie do przyjęcia, można to zastąpić jednym zapytaniem do bazy SELECT SUM(upload), SUM(download), CEIL(dt/delta) FROM stats WHERE nodeid=x GROUP BY CEIL(dt/delta)
4. trzeba dorobić pozostałe okresy 5. do jednostek masz w LMSie funkcję setunits() 6. kod html lepiej przenieść do osobnego szablonu 7. wypadałoby sprawdzić czy rozszerzenie gd jest zainstalowane i ewentualnie zamiast błędu zwrócić ładny komunikat