Skip to content

Commit

Permalink
Only use mysql Feed get_data implementation for <50 hours. Use bound …
Browse files Browse the repository at this point in the history
…parameter for 1000 query method
  • Loading branch information
CapnBry committed May 3, 2013
1 parent 65083f5 commit 3753689
Showing 1 changed file with 33 additions and 15 deletions.
48 changes: 33 additions & 15 deletions Modules/feed/feed_model.php
Expand Up @@ -351,15 +351,40 @@ public function get_data($feedid,$start,$end,$dp)
$start = $start/1000; $end = $end/1000;

$data = array();
if (($end - $start) > (5000) && $dp>0) //why 5000?
$range = $end - $start;
if ($range > 180000 && $dp > 0) // 50 hours
{
$range = $end - $start;
$td = intval($range / $dp);
$result = $this->mysqli->query(
"SELECT FLOOR(time/$td) AS `time`, AVG(data) AS `data`".
" FROM $feedname".
" WHERE `time` > $start AND `time` < $end".
" GROUP BY 1");
$td = $range / $dp;
$stmt = $this->mysqli->prepare("SELECT time, data FROM $feedname WHERE time BETWEEN ? AND ? LIMIT 1");
$t = $start; $tb = 0;
$stmt->bind_param("ii", $t, $tb);
$stmt->bind_result($dataTime, $dataValue);
for ($i=0; $i<$dp; $i++)
{
$tb = $start + intval(($i+1)*$td);
$stmt->execute();
if ($stmt->fetch()) {
if ($dataValue!=NULL) { // Remove this to show white space gaps in graph
$time = $dataTime * 1000;
$data[] = array($time, $dataValue);
}
}
$t = $tb;
}
} else {
if ($range > 5000 && $dp > 0)
{
$td = intval($range / $dp);
$sql = "SELECT FLOOR(time/$td) AS time, AVG(data) AS data".
" FROM $feedname WHERE time BETWEEN $start AND $end".
" GROUP BY 1";
} else {
$td = 1;
$sql = "SELECT time, data FROM $feedname".
" WHERE time BETWEEN $start AND $end ORDER BY time DESC";
}

$result = $this->mysqli->query($sql);
if($result) {
while($row = $result->fetch_array()) {
$dataValue = $row['data'];
Expand All @@ -369,13 +394,6 @@ public function get_data($feedid,$start,$end,$dp)
}
}
}
} else {
$result = $this->mysqli->query("select * from $feedname WHERE time>$start AND time<$end order by time Desc");
while($row = $result->fetch_array()) {
$dataValue = $row['data'];
$time = $row['time'] * 1000;
$data[] = array($time , $dataValue);
}
}

return $data;
Expand Down

0 comments on commit 3753689

Please sign in to comment.