Changeset 46 for trunk/Application/Model/Measure.php
- Timestamp:
- Jul 27, 2014, 9:05:14 PM (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Application/Model/Measure.php
r45 r46 13 13 var $DivisionCount = 500; 14 14 var $ValueTypes = array('Min', 'Avg', 'Max'); 15 15 16 16 function Load($Id) 17 17 { … … 24 24 } else throw new Exception('Measure not found'); 25 25 } 26 26 27 27 function TimeSegment($Base, $Level) 28 28 { … … 50 50 $Result = $this->Database->select($this->Data['DataTable'], '*', 'Measure='.$this->Data['Id'].' AND Level='.$Level.' ORDER BY Time DESC LIMIT 2'); 51 51 //echo($Database->LastQuery."\n"); 52 if($Result->num_rows == 0) 53 { 54 $this->Database->insert($this->Data['DataTable'], array('Min' => $Value['Min'], 'Avg' => $Value['Avg'], 'Max' => $Value['Max'], 'Level' => $Level, 'Measure' => $this->Data['Id'], 'Time' => $this->Database->TimeToMysqlDateTime($Time), 'Continuity' => 0)); 52 if($Result->num_rows == 0) 53 { 54 $this->Database->insert($this->Data['DataTable'], array('Min' => $Value['Min'], 'Avg' => $Value['Avg'], 'Max' => $Value['Max'], 'Level' => $Level, 'Measure' => $this->Data['Id'], 'Time' => $this->Database->TimeToMysqlDateTime($Time), 'Continuity' => 0)); 55 55 //echo($Database->LastQuery."\n"); 56 56 } else if($Result->num_rows == 1) … … 64 64 //echo($Level.': '.$Time.' - '.MysqlDateTimeToTime($LastValue['Time']).' '.($Time - MysqlDateTimeToTime($LastValue['Time'])).' = '.$Measure['Period']."\n"); 65 65 if((($Time - $this->Database->MysqlDateTimeToTime($LastValue['Time'])) < 0.75 * $this->Data['Period']) and ($Level == 0)) 66 { 66 { 67 67 echo('Too short period\n'); 68 68 } else … … 73 73 if(($LastValue['Min'] == $NextToLastValue['Min']) and ($LastValue['Min'] == $Value['Min']) and ($LastValue['Avg'] == $NextToLastValue['Avg']) and ($LastValue['Avg'] == $Value['Avg']) and ($LastValue['Max'] == $NextToLastValue['Max']) and ($LastValue['Max'] == $Value['Max']) and ($LastValue['Continuity'] == 1) and ($Continuity == 1)) 74 74 { 75 $this->Database->update($this->Data['DataTable'], '(Time="'.$LastValue['Time'].'") AND (Level='.$Level.') AND (Measure='.$ Measure['Id'].')', array('Time' => $this->Database->TimeToMysqlDateTime($Time)));75 $this->Database->update($this->Data['DataTable'], '(Time="'.$LastValue['Time'].'") AND (Level='.$Level.') AND (Measure='.$this->Data['Id'].')', array('Time' => $this->Database->TimeToMysqlDateTime($Time))); 76 76 //echo($this->Database->LastQuery."\n"); 77 77 } else … … 79 79 $this->Database->insert($this->Data['DataTable'], array('Min' => $Value['Min'], 'Avg' => $Value['Avg'], 'Max' => $Value['Max'], 'Level' => $Level, 'Measure' => $this->Data['Id'], 'Time' => $this->Database->TimeToMysqlDateTime($Time), 'Continuity' => $Continuity)); 80 80 } 81 } 81 } 82 82 83 83 // Update next level … … 85 85 { 86 86 $Level = $Level + 1; 87 //echo('Level '.$Level."<br >\n");87 //echo('Level '.$Level."<br/>\n"); 88 88 $TimeSegment = $this->TimeSegment($this->Data['Period'], 1); 89 89 $EndTime = $this->AlignTime($Time, $TimeSegment); … … 91 91 $StartTime = $EndTime - $TimeSegment; 92 92 93 //echo(" ".$TimeSegment." ".$StartTime.'-'.$EndTime."<br >\n");93 //echo(" ".$TimeSegment." ".$StartTime.'-'.$EndTime."<br/>\n"); 94 94 //flush(); 95 95 … … 127 127 { 128 128 $Y = ($Y2 - $Y1) / ($X2 - $X1) * ($X - $X1) + $Y1; 129 //echo($Y1.'-'.$Y.'-'.$Y2.' '.$X1.'-'.$X.'-'.$X2.'<br >');129 //echo($Y1.'-'.$Y.'-'.$Y2.' '.$X1.'-'.$X.'-'.$X2.'<br/>'); 130 130 return($Y); 131 131 } … … 182 182 } 183 183 } 184 } 185 else if($ValueType == 'Min') 186 { 187 //echo($Values[$I+1]['continuity'].'=='.$Measure['ContinuityEnabled'].'<br >');184 } 185 else if($ValueType == 'Min') 186 { 187 //echo($Values[$I+1]['continuity'].'=='.$Measure['ContinuityEnabled'].'<br/>'); 188 188 if($Values[$I + 1]['Continuity'] == $this->Data['ContinuityEnabled']) 189 189 { … … 203 203 $NewValue[$ValueType] = $NewValue[$ValueType]; 204 204 } 205 //if(($RightTime - $LeftTime) > 0) 206 if($this->Data['Cumulative'] == 0) 205 //if(($RightTime - $LeftTime) > 0) 206 if($this->Data['Cumulative'] == 0) 207 207 { 208 208 $NewValue['Avg'] = $NewValue['Avg'] / ($RightTime - $LeftTime); 209 209 } 210 210 return($NewValue); 211 //echo($NewValue['avg'].'<br >');211 //echo($NewValue['avg'].'<br/>'); 212 212 //return(array('min' => rand(0,1), 'avg' => $NewValue['avg'], 'max' => rand(0,1))); 213 213 } … … 216 216 { 217 217 // Get first and last time 218 //echo($Measure['Id'].','.$Level.','.StatTableName($Level)."\n"); 218 //echo($Measure['Id'].','.$Level.','.StatTableName($Level)."\n"); 219 219 $Result = $this->Database->select($this->Data['DataTable'], '*', 'Measure='.$this->Data['Id'].' AND Level='.$Level.' ORDER BY Time LIMIT 1'); 220 220 if($Result->num_rows > 0) … … 231 231 } else $AbsoluteRightTime = 0; 232 232 233 if($this->Debug) 234 { 235 echo('AbsoluteLeftTime: '.$AbsoluteLeftTime.'('.$this->Database->TimeToMysqlDateTime($AbsoluteLeftTime).')<br >');236 echo('AbsoluteRightTime: '.$AbsoluteRightTime.'('.$this->Database->TimeToMysqlDateTime($AbsoluteRightTime).')<br >');233 if($this->Debug) 234 { 235 echo('AbsoluteLeftTime: '.$AbsoluteLeftTime.'('.$this->Database->TimeToMysqlDateTime($AbsoluteLeftTime).')<br/>'); 236 echo('AbsoluteRightTime: '.$AbsoluteRightTime.'('.$this->Database->TimeToMysqlDateTime($AbsoluteRightTime).')<br/>'); 237 237 } 238 238 return(array('Left' => $AbsoluteLeftTime, 'Right' => $AbsoluteRightTime)); … … 240 240 241 241 function LoadRightSideValue($Level, $Time) 242 { 242 { 243 243 $Result = array(); 244 244 $DbResult = $this->Database->select($this->Data['DataTable'], '*', 'Time > "'.$this->Database->TimeToMysqlDateTime($Time).'" AND Measure='.$this->Data['Id'].' AND Level='.$Level.' ORDER BY Time ASC LIMIT 1'); … … 267 267 { 268 268 $Result = array(); 269 //echo('SELECT * FROM '.StatTableName($Level). ' WHERE '. 'Time < "'.TimeToMysqlDateTime($Time).'" AND measure='.$Measure['Id'].' AND level='.$Level.' ORDER BY Time DESC LIMIT 1'."<br >\n");269 //echo('SELECT * FROM '.StatTableName($Level). ' WHERE '. 'Time < "'.TimeToMysqlDateTime($Time).'" AND measure='.$Measure['Id'].' AND level='.$Level.' ORDER BY Time DESC LIMIT 1'."<br/>\n"); 270 270 $DbResult = $this->Database->select($this->Data['DataTable'], '*', 'Time < "'.$this->Database->TimeToMysqlDateTime($Time).'" AND Measure='.$this->Data['Id'].' AND Level='.$Level.' ORDER BY Time DESC LIMIT 1'); 271 271 if($DbResult->num_rows > 0) … … 294 294 function GetValues($TimeFrom, $TimeTo, $Level) 295 295 { 296 if($this->Debug) echo('TimeFrom: '.$TimeFrom.'('.$this->Database->TimeToMysqlDateTime($TimeFrom).')<br >');297 if($this->Debug) echo('TimeTo: '.$TimeTo.'('.$this->Database->TimeToMysqlDateTime($TimeTo).')<br >');296 if($this->Debug) echo('TimeFrom: '.$TimeFrom.'('.$this->Database->TimeToMysqlDateTime($TimeFrom).')<br/>'); 297 if($this->Debug) echo('TimeTo: '.$TimeTo.'('.$this->Database->TimeToMysqlDateTime($TimeTo).')<br/>'); 298 298 299 299 //$AbsoluteTime = GetTimeRange($MeasureId); 300 300 301 // if(($TimeFrom > $AbsoluteLeftTime) and ($TimeStart < $AbsoluteRightTime) and 301 // if(($TimeFrom > $AbsoluteLeftTime) and ($TimeStart < $AbsoluteRightTime) and 302 302 // ($TimeTo > $AbsoluteLeftTime) and ($TimeTo < $AbsoluteRightTime)) 303 303 // { … … 319 319 // die(); 320 320 if($this->Debug) echo('Item count: '.count($Values)); 321 321 322 322 $Points = array(); 323 323 if(count($Values) > 0) 324 324 { 325 325 $Values = array_merge($this->LoadLeftSideValue($Level, $TimeFrom), $Values, $this->LoadRightSideValue($Level, $TimeTo)); 326 //echo(count($Values).'<br >');327 //echo($TimeFrom.','.$TimeTo.'<br >');328 //echo($Values[0]['Time'].'<br >');326 //echo(count($Values).'<br/>'); 327 //echo($TimeFrom.','.$TimeTo.'<br/>'); 328 //echo($Values[0]['Time'].'<br/>'); 329 329 $StartIndex = 0; 330 330 $Points = array(); 331 //echo($DivisionCount.'<br >');331 //echo($DivisionCount.'<br/>'); 332 332 if($this->Debug) print_r($Values); 333 333 //die(); … … 335 335 { 336 336 $TimeStart = $TimeFrom + (($TimeTo - $TimeFrom) / $this->DivisionCount) * $I; 337 //if($Debug) echo('TimeStart '.$I.': '.$TimeStart.'('.TimeToMysqlDateTime($TimeStart).')<br >');337 //if($Debug) echo('TimeStart '.$I.': '.$TimeStart.'('.TimeToMysqlDateTime($TimeStart).')<br/>'); 338 338 $TimeEnd = $TimeFrom + (($TimeTo - $TimeFrom) / $this->DivisionCount) * ($I + 1); 339 if($this->Debug) echo('TimeEnd '.$I.': '.$TimeEnd.'('.$this->Database->TimeToMysqlDateTime($TimeEnd).')<br >');340 //echo($TimeStart.','.$TimeEnd.'<br >');339 if($this->Debug) echo('TimeEnd '.$I.': '.$TimeEnd.'('.$this->Database->TimeToMysqlDateTime($TimeEnd).')<br/>'); 340 //echo($TimeStart.','.$TimeEnd.'<br/>'); 341 341 342 342 $EndIndex = $StartIndex; … … 344 344 //while(($Values[$EndIndex]['Time'] < $TimeEnd)) $EndIndex = $EndIndex + 1; 345 345 $SubValues = array_slice($Values, $StartIndex, $EndIndex - $StartIndex + 1); 346 //echo($StartIndex.','.$EndIndex.' '.count($SubValues).'<br >');346 //echo($StartIndex.','.$EndIndex.' '.count($SubValues).'<br/>'); 347 347 //print_r($SubValues); 348 348 $Points[] = $this->ComputeOneValue($TimeStart, $TimeEnd, $SubValues, $Level); … … 356 356 function RebuildMeasureCache() 357 357 { 358 echo('Velicina '.$this->Data['Name']."<br >\n");358 echo('Velicina '.$this->Data['Name']."<br/>\n"); 359 359 if($this->Data['Continuity'] == 0) $this->Data['ContinuityEnabled'] = 0; // non continuous 360 360 else $this->Data['ContinuityEnabled'] = 2; // continuous graph … … 365 365 echo("Mazu starou cache (".$Row[0]." polozek)..."); 366 366 $this->Database->delete($this->Data['DataTable'], 'Level > 0 AND Measure='.$this->Data['Id']); 367 echo("<br >\n");367 echo("<br/>\n"); 368 368 369 369 for($Level = 1; $Level <= $this->MaxLevel; $Level++) 370 370 { 371 echo('Uroven '.$Level."<br >\n");371 echo('Uroven '.$Level."<br/>\n"); 372 372 $TimeRange = $this->GetTimeRange($Level - 1); 373 373 //echo($Measure['Id'].','.($Level-1)."\n"); … … 377 377 $EndTime = $this->AlignTime($TimeRange['Right'], $TimeSegment); 378 378 $BurstCount = 500; 379 echo('For 0 to '.round(($EndTime - $StartTime) / $TimeSegment / $BurstCount)."<br >\n");379 echo('For 0 to '.round(($EndTime - $StartTime) / $TimeSegment / $BurstCount)."<br/>\n"); 380 380 for($I = 0; $I <= round(($EndTime - $StartTime) / $TimeSegment / $BurstCount); $I++) 381 381 { … … 384 384 $EndTime2 = $StartTime + ($I + 1) * $BurstCount * $TimeSegment; 385 385 $Values = array(); 386 $DbResult = $this->Database->select($this->Data['DataTable'], '*', 'Time > "'.$this->Database->TimeToMysqlDateTime($StartTime2).'" AND Time < "'.$this->Database->TimeToMysqlDateTime($EndTime2).'" AND Measure='.$Measure['Id'].' AND Level='.($Level - 1).' ORDER BY Time'); 386 $DbResult = $this->Database->select($this->Data['DataTable'], '*', 'Time > "'. 387 $this->Database->TimeToMysqlDateTime($StartTime2).'" AND Time < "'. 388 $this->Database->TimeToMysqlDateTime($EndTime2).'" AND Measure='.$this->Data['Id']. 389 ' AND Level='.($Level - 1).' ORDER BY Time'); 387 390 while($Row = $DbResult->fetch_assoc()) 388 391 { … … 393 396 if(count($Values) > 0) 394 397 { 395 $Values = array_merge($this->LoadLeftSideValue($Level - 1, $StartTime2), $Values, $this->LoadRightSideValue($Level - 1, $Measure, $EndTime2)); 398 $Values = array_merge($this->LoadLeftSideValue($Level - 1, $StartTime2), 399 $Values, $this->LoadRightSideValue($Level - 1, $EndTime2)); 396 400 397 401 $StartIndex = 0; … … 405 409 while($Values[$EndIndex]['Time'] < $EndTime3) $EndIndex = $EndIndex + 1; 406 410 $SubValues = array_slice($Values, $StartIndex, $EndIndex - $StartIndex + 1); 407 //echo($StartIndex.','.$EndIndex.' '.count($SubValues).'<br >');411 //echo($StartIndex.','.$EndIndex.' '.count($SubValues).'<br/>'); 408 412 //print_r($SubValues); 409 413 if(count($SubValues) > 2) … … 418 422 // Load values in time range 419 423 //array_pop($NextValues); 420 } 421 echo("Uroven dokoncena<br >\n");424 } 425 echo("Uroven dokoncena<br/>\n"); 422 426 $DbResult = $this->Database->select($this->Data['DataTable'], 'COUNT(*)', 'Level='.$Level.' AND Measure='.$this->Data['Id']); 423 427 $Row = $DbResult->fetch_row(); 424 echo("Vloženo ".$Row[0]." položek.<br >\n");428 echo("Vloženo ".$Row[0]." položek.<br/>\n"); 425 429 } 426 430 } … … 441 445 { 442 446 $Measure->RebuildMeasureCache(); 443 echo('Velicina dokoncena<br >');447 echo('Velicina dokoncena<br/>'); 444 448 } 445 449 }
Note:
See TracChangeset
for help on using the changeset viewer.