1

目前,我有一个在我的服务器上创建的工具的访问日志。这些工具不会过期,但是它们都是在不同的时间创建的(很像产品)。它们具有 ID、各种数据字段以及创建时的时间戳。

我需要的是根据时间将访问日志条目分组和计数为 x 个间隔。现在我正在修补 10 个步骤(间隔)。我想在这 10 个时间间隔内计算访问条目,从而根据时间有一种使用参考。我没有使用固定的时间间隔,我的间隔是(当前时间 - 添加时间)/10。

这是我的输出目标:

From: 1351159089
Now: 1353932533

From           To               Entries
1351159089   - 1351436433.4  =  2
1351436433.4 - 1351713777.8  =  1
1351713777.8 - 1351991122.2  =  0
1351991122.2 - 1352268466.6  =  2
1352268466.6 - 1352545811    =  5
1352545811   - 1352823155.4  =  0
1352823155.4 - 1353100499.8  =  2
1353100499.8 - 1353377844.2  =  0
1353377844.2 - 1353655188.6  =  2
1353655188.6 - 1353932533    =  3

我现在所做的只是使用 PHP 和多个查询:

$from = strtotime($timeCreated);
$now = time();
$dif = $now-$from;

$steps = $dif/10;

for($i=0; $i <= 9; $i++) {
    $intervalFrom = $from+($steps*$i);
    $intervalTo = $intervalFrom+$steps;
    $get = mysql_fetch_assoc(mysql_query('SELECT count(id) as `total` FROM `access_log` WHERE `time` >= FROM_UNIXTIME('.$intervalFrom.') AND `time` < FROM_UNIXTIME('.$intervalTo.') AND `item` = "'.$itemID.'"'));
    $accessLogs[$i] = $get['total'];
}

我不会说它很慢,但在一页上我可能有 5-10 个或更多这样的内容,然后它开始显示只有一个项目的一堆查询的缺点。

是否有一种更智能、更快速的方法来仅使用一个或两个 MySQL 查询来获得此输出?

谢谢

编辑:已经很久了,想知道这是否可以做到?

4

0 回答 0