Changeset 40
- Timestamp:
- Aug 28, 2009, 10:05:03 PM (15 years ago)
- Location:
- trunk
- Files:
-
- 73 added
- 11 deleted
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Readme.txt
r37 r40 5 5 ========= 6 6 7 * Pro správnou funkci je po adován webový server (napø. apache), MySql databáze a PHP interpretr. Dále pro vykreslení grafùtaké knihovna php-gd.8 * Zkopírujte soubor ukázkový config.sample.php jako config.php do stejné sloky a upravte v nìm nastavení.9 * Vytvo øete v databázi uivatele statistic a tabulku statistic a doplòte pøístupové údaje do config.php.10 * Prove ïtì import ukázkových dat ze souboru full.sql s nejvyím èíslem revize umístìným ve sloce sql. Samotná struktura tabulky measure je v measure.sql a ukázková struktura datové tabulky je v data.sql.11 * Ve slo ce measure_scripts je ukázkový soubor monitor.sample.php, který zajiuje získávání informací o rùzných velièinách v poèítaèi a jejich plnìní do systému. Zkopírujte jej jako monitor.php a upravte dle potøeb.7 * Pro správnou funkci je požadován webový server (např. Apache), MySQL databáze a PHP interpretr. Dále pro vykreslení grafů také knihovna php-gd. 8 * Zkopírujte ukázkový soubor Application/Config/ConfigSample.php jako Config.php do stejné složky a upravte v něm nastavení. 9 * Vytvořete v databázi uživatele statistic a tabulku statistic a doplňte přístupové údaje do Config.php. 10 * Proveďtě import ukázkových dat ze souboru Full.sql s nejvyšším číslem revize umístěným ve složce SQL. Samotná struktura tabulky measure je v Measure.sql a ukázková struktura datové tabulky je v Data.sql. 11 * Ve složce measure_scripts je ukázkový soubor monitor.sample.php, který zajišťuje získávání informací o různých veličinách v počítači a jejich plnění do systému. Zkopírujte jej jako monitor.php a upravte dle potřeb. 12 12 13 Poznámky k vydání 14 ================= 13 14 Poznámky k vydání: 15 ================== 15 16 16 17 Verze 3.1 (13.2.2008) 18 --------------------- 17 19 18 * Upraveny skripty pro plnìní dat.19 * Pøidán odkaz pod grafem odkazující staticky na vybraný èasový úsek.20 * Opraveno zobrazování desetinných míst u èísel bez jednotek21 22 * Rùzné mení opravy20 * Upraveny skripty pro plnění dat. 21 * Přidán odkaz pod grafem odkazující staticky na vybraný časový úsek. 22 * Opraveno zobrazování desetinných míst u čísel bez jednotek 23 * Upravena poloha zobrazování celkové informace Min, Avg, Max. 24 * Různé menší opravy 23 25 24 26 Verze 3.0 (14.12.2007) 27 ---------------------- 25 28 26 * Pøepsán pøístup k databázi MySQL pøes tøídu mysqli27 * Data mìøení byly pro zvýení rychlosti rozdìleny do jednotlivých tabulek avak stále je moné mít v jedné datové tabulce více mìøení. Rozdìlení dat do více tabulek také umonilo mít uloená data s rùznou pøesnosti pro jednolivé mìøení. Pùvodnì pouze INT, nyní vechny dalí èíselné typy jako TINYINT, SMALLINT, INT, BIGINT a FLOAT.28 * Pøidáno automatické zaokrouhlení zobrazovaných hodnot a zobrazení pøedpon jednotek.29 * Doplnìny dalí skripty pro zjiování informací o systému a plnìní databáze.30 * Nastavení sdrueno do souboru config.php.31 * Rùzné opravy29 * Přepsán přístup k databázi MySQL přes třídu mysqli 30 * Data měření byly pro zvýšení rychlosti rozděleny do jednotlivých tabulek avšak stále je možné mít v jedné datové tabulce více měření. Rozdělení dat do více tabulek také umožnilo mít uložená data s různou přesnosti pro jednolivé měření. Původně pouze INT, nyní všechny další číselné typy jako TINYINT, SMALLINT, INT, BIGINT a FLOAT. 31 * Přidáno automatické zaokrouhlení zobrazovaných hodnot a zobrazení předpon jednotek. 32 * Doplněny další skripty pro zjišťování informací o systému a plnění databáze. 33 * Nastavení sdruženo do souboru config.php. 34 * Různé opravy 32 35 33 36 Verze 2.2 (30.6.2007) 37 --------------------- 34 38 35 * opraveno vykreslování grafu pøed celkovým zaèátkem a po celkovém konci mìøení36 39 * opraveno vykreslování grafu před celkovým začátkem a po celkovém konci měření 40 * opraveno vykreslování poslední hodnoty v grafu 37 41 38 42 Verze 2.1 (24.3.2007) 39 40 * rùzné opravy 43 --------------------- 44 45 * různé opravy 41 46 42 47 Verze 2.0 (16.3.2007) 48 --------------------- 43 49 44 * dynamické zobrazování èasové osy, výbìr bìných úsekù nebo pøesného intervalu dle poèáteèního a koneèného èasu45 * pouití TrueType fontù46 * mìnitelné rozmìry generovaného obrázku47 * automatická redukce naèítaných dat pro delí èasového mìøítka48 * automatická redukce po sobì se opakujících stejných do jedné, redukce nulových a málo promìnných odmìrù49 * v úsecích, kde se nemìøilo buï reim automatická interpolace hodnot nebo nulový údaj50 * Záznam a zobrazení grafù minima, prùmìru a maxima51 * zápis nových hodnot pøes webové HTTP, kontrola podle adres poèítaèù52 * seznam mìøení uloen v tabulce50 * dynamické zobrazování časové osy, výběr běžných úseků nebo přesného intervalu dle počátečního a konečného času 51 * použití TrueType fontů 52 * měnitelné rozměry generovaného obrázku 53 * automatická redukce načítaných dat pro delší časového měřítka 54 * automatická redukce po sobě se opakujících stejných do jedné, redukce nulových a málo proměnných odměrů 55 * v úsecích, kde se neměřilo buď režim automatická interpolace hodnot nebo nulový údaj 56 * Záznam a zobrazení grafů minima, průměru a maxima 57 * zápis nových hodnot přes webové HTTP, kontrola podle adres počítačů 58 * seznam měření uložen v tabulce 53 59 54 60 Verze 1.0 (25.11.2004) 61 ---------------------- 55 62 56 * statické zobrazování èasové osy v rozsahu hodina, den, týden, mìsíc, rok a více rokù57 * jednotná tabulka pro vechna mìøení, kadé mìøení jako jeden sloupec, kadou minutu nový øádek58 * zobrazování prùmìru a maxima59 * seznam mìøení uloen v poli63 * statické zobrazování časové osy v rozsahu hodina, den, týden, měsíc, rok a více roků 64 * jednotná tabulka pro všechna měření, každé měření jako jeden sloupec, každou minutu nový řádek 65 * zobrazování průměru a maxima 66 * seznam měření uložen v poli 60 67 61 Kontakt: robie@centrum.cz68 Kontakt: Chronos, robie@centrum.cz -
trunk/global.php
r37 r40 2 2 3 3 session_start(); 4 include_once('config.php'); 4 if(file_exists('config.php')) include_once('config.php'); 5 else die('Nenalezen soubor config.php. Vytvořte jej z předlohy config.sample.php'); 5 6 include_once('database.php'); 6 7 include_once('code.php'); -
trunk/index.php
r37 r40 1 1 <?php 2 include('global.php');3 2 4 $Debug = 0; 3 include('Include.php'); 4 if(array_key_exists('argv', $_SERVER)) 5 $_GET = array_merge($_GET, ParseCommandLineArgs($_SERVER['argv'])); 5 6 6 function EditTime($Time) 7 // SQL injection hack protection 8 foreach($_POST as $Index => $Item) $_POST[$Index] = addslashes($Item); 9 foreach($_GET as $Index => $Item) $_GET[$Index] = addslashes($Item); 10 11 if(isset($_SERVER['REMOTE_ADDR'])) session_start(); 12 13 $System = new System(); 14 $ScriptTimeStart = $System->GetMicrotime(); 15 $System->Database = new Database($Config['Database']['Host'], $Config['Database']['User'], $Config['Database']['Password'], $Config['Database']['Database']); 16 $System->Database->Prefix = $Config['Database']['Prefix']; 17 $System->Database->charset($Config['Database']['Charset']); 18 $System->Config = $Config; 19 $System->AddModule(new Log($System)); 20 $System->AddModule(new User($System)); 21 $System->AddModule(new Permission($System)); 22 if(isset($_SERVER['REMOTE_ADDR'])) $System->Modules['User']->Check(); 23 else $System->Modules['User']->Data['Id'] = $Config['Web']['UserConsoleId']; 24 $System->Modules['Permission']->LoadForUser($System->Modules['User']->Data['Id']); 25 //print_r($System->Modules['Permission']->Data); 26 27 if(array_key_exists('Module', $_GET)) $Module = $_GET['Module']; 28 else $Module = 'HomePage'; 29 if(array_key_exists('Action', $_GET)) $Action = $_GET['Action']; 30 else $Action = 'Show'; 31 32 $ControllerName = $Module.'Controller'; 33 if(class_exists($ControllerName)) 7 34 { 8 global $Months; 35 $Controller = new $ControllerName($System); 36 if(method_exists($Controller, $Action)) $Output = $Controller->$Action(); 37 else $Output = 'Metoda '.$Action.' modulu '.$Module.' neexistuje.'; 38 } else $Output = 'Třída '.$ControllerName.' neexistuje.'; 9 39 10 $Output = '<form style="display: inline;" action="?Operation=SetTime&Time='.$Time.'" method="post">'; 11 12 $TimeParts = getdate($_SESSION[$Time]); 13 //print_r($TimeParts); 14 15 // Day selection 16 $Output .= '<select name="Day">'; 17 for($I = 1; $I < 32; $I++) 18 { 19 if($I == $TimeParts['mday']) $Selected = ' selected="1"'; else $Selected = ''; 20 $Output .= '<option value="'.$I.'"'.$Selected.'>'.$I.'</option>'; 21 } 22 $Output .= '</select>. '; 23 24 // Month selection 25 $Output .= '<select name="Month">'; 26 foreach($Months as $Index => $Month) 27 { 28 if($Index == $TimeParts['mon']) $Selected = ' selected="1"'; else $Selected = ''; 29 if($Index > 0) $Output .= '<option value="'.$Index.'"'.$Selected.'>'.$Month.'</option>'; 30 } 31 $Output .= '</select>. '; 32 33 // Day selection 34 $Output .= '<select name="Year">'; 35 for($I = 2000; $I < 2010; $I++) 36 { 37 if($I == $TimeParts['year']) $Selected = ' selected="1"'; else $Selected = ''; 38 $Output .= '<option value="'.$I.'"'.$Selected.'>'.$I.'</option>'; 39 } 40 $Output .= '</select> '; 41 42 // Hour selection 43 $Output .= '<select name="Hour">'; 44 for($I = 0; $I < 24; $I++) 45 { 46 if($I == $TimeParts['hours']) $Selected = ' selected="1"'; else $Selected = ''; 47 $Output .= '<option value="'.$I.'"'.$Selected.'>'.$I.'</option>'; 48 } 49 $Output .= '</select> : '; 50 51 // Minute selection 52 $Output .= '<select name="Minute">'; 53 for($I = 0; $I < 60; $I++) 54 { 55 if($I == $TimeParts['minutes']) $Selected = ' selected="1"'; else $Selected = ''; 56 $Output .= '<option value="'.$I.'"'.$Selected.'>'.$I.'</option>'; 57 } 58 $Output .= '</select> '; 59 $Output .= '<input type="submit" value="Nastavit">'; 60 $Output .= '</form>'; 61 62 $Output .= ' <form style="display: inline;" action="?Operation=SetTimeNow&Time='.$Time.'" method="post">'; 63 $Output .= '<input type="submit" value="Aktuální čas">'; 64 $Output .= '</form>'; 65 66 return($Output); 67 } 68 69 $Months = array('', 'Leden', 'Únor', 'Březen', 'Duben', 'Květen', 'Červen', 'Červenec', 'Srpen', 'Září', 'Říjen', 'Listopad', 'Prosinec'); 70 71 $GrafTimeRanges = array 72 ( 73 'hour' => array( 74 'caption' => 'Hodina', 75 'period' => 3600, 76 ), 77 'day' => array( 78 'caption' => 'Den', 79 'period' => 3600 * 24, 80 ), 81 'week' => array( 82 'caption' => 'Týden', 83 'period' => 3600 * 24 * 7, 84 ), 85 'month' => array( 86 'caption' => 'Měsíc', 87 'period' => 3600 * 24 * 30, 88 ), 89 'year' => array( 90 'caption' => 'Rok', 91 'period' => 3600 * 24 * 365, 92 ), 93 'years' => array( 94 'caption' => 'Desetiletí', 95 'period' => 3600 * 24 * 365 * 10, 96 ), 97 ); 98 99 foreach($Config['DefaultVariables'] as $Index => $Variable) 100 { 101 if(!array_key_exists($Index, $_SESSION)) $_SESSION[$Index] = $Variable; 102 if(array_key_exists($Index, $_GET)) $_SESSION[$Index] = $_GET[$Index]; 103 if(array_key_exists($Index, $_POST)) $_SESSION[$Index] = $_POST[$Index]; 104 //$$Index = $_SESSION[$Index]; 105 } 106 107 if($_SESSION['TimeSpecify'] == 0) 108 { 109 $_SESSION['TimeEnd'] = time() - 60; 110 $_SESSION['TimeStart'] = $_SESSION['TimeEnd'] - $GrafTimeRanges[$_SESSION['Period']]['period']; 111 } 112 113 $Output = '<div class="Title">Statistiky</div>'; 114 115 if(!array_key_exists('Operation', $_GET)) $_GET['Operation'] = ''; 116 switch($_GET['Operation']) 117 { 118 case 'SetTime': 119 if(array_key_exists('Time', $_GET) and array_key_exists('Month', $_POST) and array_key_exists('Day', $_POST) and 120 array_key_exists('Year', $_POST) and array_key_exists('Hour', $_POST) and array_key_exists('Minute', $_POST)) 121 { 122 if(($_GET['Time'] == 'TimeStart') or ($_GET['Time'] == 'TimeEnd')) 123 { 124 $_SESSION[$_GET['Time']] = mktime($_POST['Hour'], $_POST['Minute'], 0, $_POST['Month'], 125 $_POST['Day'], $_POST['Year']); 126 $$_GET['Time'] = $_SESSION[$_GET['Time']]; 127 } 128 } 129 break; 130 case 'SetTimeNow': 131 if(array_key_exists('Time', $_GET)) 132 { 133 if(($_GET['Time'] == 'TimeStart') or ($_GET['Time'] == 'TimeEnd')) 134 { 135 $_SESSION[$_GET['Time']] = time(); 136 $$_GET['Time'] = $_SESSION[$_GET['Time']]; 137 } 138 } 139 break; 140 141 } 142 $Output .= '<strong>Časový úsek:</strong><br>'; 143 // Show graf time range menu 144 if($_SESSION['TimeSpecify'] == 0) 145 { 146 $Output .= 'Délka úseku: '; 147 foreach($GrafTimeRanges as $Index => $Item) 148 $Output .= '<a href="?Period='.$Index.'">'.$Item['caption'].'</a> '; 149 $Output .= '<br>'; 150 $Output .= '<a href="?TimeSpecify=1">Přesnější nastavení...</a><br>'; 151 } else { 152 $Output .= '<table cellspacing="0" cellpadding="2" border="0">'; 153 $Output .= '<tr><td>Počátek:</td><td>'.EditTime('TimeStart').'</td></tr>'; 154 $Output .= '<tr><td>Konec:</td><td>'.EditTime('TimeEnd').'</td></tr>'; 155 $Output .= '</table>'; 156 $Output .= '<a href="?TimeSpecify=0">Jednoduché nastavení...</a><br>'; 157 } 158 $Output .= '<br>'; 159 160 $Output .= '<strong>Graf:</strong><br>'; 161 $Output .= '<img alt="Graf" src="graph.php?Measure='.$_SESSION['Measure'].'&From='.$_SESSION['TimeStart'].'&To='.$_SESSION['TimeEnd'].'&Width=750&Height=200&Differential='.$_SESSION['Differential'].'" width="750" height="200"><br>'; 162 $Output .= '<a href="?Measure='.$_SESSION['Measure'].'&TimeStart='.$_SESSION['TimeStart'].'&TimeEnd='.$_SESSION['TimeEnd'].'&TimeSpecify=1&Differential='.$_SESSION['Differential'].'">Odkaz na vybraný graf</a><br>'; 163 //print_r(GetValues($Measure, $TimeStart, $TimeEnd)); 164 165 $Output .= '<br>'; 166 167 $Output .= '<table border="1" cellspacing="0" cellpadding="2" style="font-size: small;">'; 168 $Output .= '<tr><th>Měřená veličina</th><th>Poslední hodnota</th><th>Čas posledního měření</th><th>Interpolace</th><th>Poznámky</th>'; 169 if(array_key_exists('Debug', $_GET)) $Output .= '<th>Počet položek</th><th>Čas vykonání</th>'; 170 $Output .= '</tr>'; 171 $Database->select_db('measure'); 172 $Result = $Database->select('measure', '*', 'Enabled=1 AND PermissionView="all" OR PermissionView="'.gethostbyaddr($_SERVER['REMOTE_ADDR']).'" ORDER BY Description'); 173 //echo($Database->error); 174 175 while($Measure = $Result->fetch_array()) 176 { 177 $StopWatchStart = GetMicrotime(); 178 if(array_key_exists('Debug', $_GET)) 179 { 180 $DbResult = $Database->select($Measure['DataTable'], 'COUNT(*)', 'measure='.$Measure['Id']); 181 $RowCount = $DbResult->fetch_array(); 182 $RowCount = $RowCount[0]; 183 } 184 $Result2 = $Database->select($Measure['DataTable'], 'time, avg', 'measure='.$Measure['Id'].' AND level=0 ORDER BY time DESC LIMIT 1'); 185 if($Result2->num_rows > 0) 186 { 187 $Row = $Result2->fetch_array(); 188 $LastMeasureTime = date('j.n.Y G:i:s', MysqlDateTimeToTime($Row['time'])); 189 $LastMeasureValue = AddPrefixMultipliers($Row['avg'], $Measure['Unit']); 190 } else 191 { 192 $LastMeasureTime = ' '; 193 $LastMeasureValue = ' '; 194 } 195 if($Measure['Continuity'] == 1) $Interpolate = 'Ano'; else $Interpolate = 'Ne'; 196 if($Measure['Info'] == '') $Measure['Info'] = ' '; 197 $GenerationTime = floor((GetMicrotime() - $StopWatchStart) * 1000 ) / 1000; 198 $Output .= '<tr><td><a href="?Measure='.$Measure['Id'].'&Differential=0">'.$Measure['Description'].'</a></td><td align="center">'.$LastMeasureValue.'</td><td align="center">'.$LastMeasureTime.'</td><td align="center">'.$Interpolate.'</td><td>'.$Measure['Info'].'</td>'; 199 if(array_key_exists('Debug', $_GET)) $Output .= '<td>'.$RowCount.'</td><td>'.$GenerationTime.'</td>'; 200 $Output .= '</tr>'; 201 } 202 $Output .= '</table>'; 203 $Output .= '<br><a href="http://game.zdechov.net/statistic/development/">Sekce vývoje systému</a>'; 204 //echo(time()); 205 //print_r(gd_info()); 206 $Output .= '</body></html>'; 207 //print_r($_SESSION); 208 209 ShowPage($Output); 210 211 //echo(AddPrefixMultipliers('-0.000000071112345', 'B')); 40 echo($Output); 212 41 213 42 ?>
Note:
See TracChangeset
for help on using the changeset viewer.