From 5bd8c87f27c5b8332ebee6f96a9a2bdbf7c55c60 Mon Sep 17 00:00:00 2001 From: "Valeriano A.R" Date: Sun, 28 Jun 2015 17:41:25 +0200 Subject: [PATCH] TimingStatistics: Scanning timing and statistics. --- code/main.php | 14 +++++++++ code/timingStatistics.php | 62 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 76 insertions(+) create mode 100644 code/timingStatistics.php diff --git a/code/main.php b/code/main.php index 251af36..6bae884 100644 --- a/code/main.php +++ b/code/main.php @@ -9,6 +9,8 @@ include_once "scanner.php"; include_once "multilang.php"; MultiLang::LoadFile("ui"); +include_once "timingStatistics.php"; +$timings=new TimingStatistics(); function RenderDocument($filePath){ $render=""; @@ -45,9 +47,12 @@ $Size=RequestParm("ddlSize",$Size); $Crop=RequestParm("chkCrop",$Crop)!=false; $CropFuzz=RequestParm("txtCropFuzz",$CropFuzz); +$CurrentKey=$Scanner["ScanDevice"]."_".$Resolution."_".$Format."_".$Size; + // Preprocess $DestFile=null; if(RequestParm("btnScan",false)){ + $timeThen=time()+microtime(); CleanUp(); $baseName="Scan-".date("Y-m-d_H_i_s"); $DestFile=Scan($Scanner["ScanDevice"],$Resolution,$Format,$Size,$baseName); @@ -55,8 +60,17 @@ if(RequestParm("btnScan",false)){ CropImage($DestFile); } MoveToDest($DestFile); + $timeNow=time()+microtime(); + $timings->RegisterTiming($CurrentKey,$timeNow-$timeThen); } +// Pass the JSON object of timings to client +echo "\n"; + // Render Form $formFields=""; $formFields.=RenderFieldInfo(MultiLang::GetString("Scanner"),$Scanner["ScanModel"]); diff --git a/code/timingStatistics.php b/code/timingStatistics.php new file mode 100644 index 0000000..0deea8e --- /dev/null +++ b/code/timingStatistics.php @@ -0,0 +1,62 @@ +values=array(); + } + + private function LoadValues(){ + if($this->values!=null){return;} + if(!is_file($this->filename)){ + $this->InitValues(); + return; + } + $overviewContents=@file_get_contents($this->filename); + if($overviewContents===false){ + $this->InitValues(); + return; + } + $this->values=json_decode($overviewContents,true); + if($this->values==null){ + $this->InitValues(); + return; + } + } + + private function SaveValues(){ + if($this->values==null){return;} + + $valuesContent=json_encode($this->values,JSON_PRETTY_PRINT); + file_put_contents($this->filename,$valuesContent); + } + + public function RegisterTiming($keyName,$time){ + $this->LoadValues(); + if(isset($this->values[$keyName])==false){ + $this->values[$keyName]=array(); + } + $this->values[$keyName][]=$time; + if(count($this->values[$keyName])>5){ + unset($this->values[$keyName][0]); + } + $this->SaveValues(); + } + + public function GetTimingsAverage(){ + $this->LoadValues(); + $result=array(); + foreach ($this->values as $key => $value) { + $totalTime=0; + $totalCount=0; + foreach ($value as $time) { + $totalTime=$totalTime+$time; + $totalCount=$totalCount+1; + } + $result[$key]=($totalTime/$totalCount); + } + return $result; + } +}