PHP:生成datePeriod并快速匹配日期

时间:2014-11-12 06:10:42

标签: php sum intervals date-range

我正在使用以下方法生成日期范围数组:($ from和$ to)

$begin = new DateTime(date('Y-m-d', $from));
$end = new DateTime(date('Y-m-d', $to));
$end = $end->modify('+1 day');
$dateInterval = new DateInterval('P1D');
$range = new DatePeriod($begin, $dateInterval, $end);

foreach ($range as $date) {
    $dateIntervalArray[$date->format('Y-m-d\TH:i:s')] = array();
}

接下来,我从MySQL查询中添加数据并将它们与interval-array匹配(但是这里用于每小时聚合)(这需要花费大部分时间)

foreach ($data as $item) {
    $dateIntervalArray[date('Y-m-d\TH:00:s', $item->PointOfTime - 900)][] = $item->measurement;
}

在最后一步中我汇总数据:

foreach ($dateIntervalArray as $key => $item) {
    $arraySum = array_sum($item);
    array_push($energyData, array(
        'PointOfTime' => strtotime($key),
        'ValueHT' => $arraySum
    ));

    // Further, I calculate e.g. min/max 
    // find min per hour

    // find max per hour

    // Sum per hour

    // Total sum

    // Total average
}

这样可以正常使用!但是数据量较大时速度很慢。我每天收到96套,每年有近35000条数据。如果我获取更多数据,就像我正在处理的情况一样,我正在处理近350.000个数据。在我的网络前端渲染需要大约6-7秒。

问:我怎样才能改善这一点?

我想过用MySQL计算这个,但是我需要每小时的最大值,即使我按日或月计算。想法?

0 个答案:

没有答案