又来 咨询问题了, PHP 相关,日志查询 统计每 30 分钟的数据量。

2019-01-27 00:14:04 +08:00
 Steps

在网上查资料查到了每小时的生成方法,如下: 但是我把 3600 改成了 1800 如果写 i+= 1800; 格式 就只能查到当前的分, 我需要的是 00:00 00:30 01:00 01:30 ... 这样的格式,我现在只能做到 00:02 00:32 ...

这样。。 求教。 代码如下

$now = time();
$start = strtotime('-1 days');
for ($i=$start; $i<=$now; $i+=1800) {
    $start_date = date('Y-m-d H', $i);
    $end_date = date('Y-m-d H', $i);
    $mdate = date('H:i', $i);
    $data[$mdate] = 数据查询;
}

得到的 $mdate 是我上面说的格式。。

我所需要的是整点 和 30 分钟的,我该如何去写?

1267 次点击
所在节点    问与答
16 条回复
jugelizi
2019-01-27 00:36:21 +08:00
$start 取错了
allenhu
2019-01-27 00:37:29 +08:00
脑子真是个好东西
Steps
2019-01-27 00:42:21 +08:00
Steps
2019-01-27 00:45:26 +08:00
我是这样想的,
24 小时的就显示出 48 组数据,每组 半小时,
7 天的就显示 42 组,每组 6 小时,
30 天就显示 30 组,每组一天为时段。

我该如何去操作?
boks
2019-01-27 00:49:46 +08:00
$now = time();
$start = strtotime('-1 days');
$start -= ($start % 1800);
...
Steps
2019-01-27 00:51:07 +08:00
@boks #5 谢谢!
Steps
2019-01-27 00:54:56 +08:00
@boks #5 可以半小时生成一次了,如果按照我上面说的操作,我该怎么操作?
boks
2019-01-27 01:13:51 +08:00
$now = time();
$Range = '30';
$map = [
'1' => 1800,
'7' => 3600 * 6,
'30' => 3600 * 24,
];
$start = strtotime("-{$Range} days");
$start -= $start % $map[$Range];
for ($i=$start; $i<=$now; $i+=$map[$Range]) {
$start_date = date('Y-m-d H', $i);
$end_date = date('Y-m-d H', $i);
$mdate = date('Y-m-d H:i', $i);
$data[$mdate] = '数据查询';
}
var_dump($data);
SwordImmortal
2019-01-27 01:16:00 +08:00
2 楼专业喷子吗
xiaotuzi
2019-01-27 01:17:25 +08:00
随时间每 30 分钟执行一次统计就行了。你这个写的是查询历史数据统计…当然是轮询写 SQL 查询得结果了…
Steps
2019-01-27 01:57:32 +08:00
@boks #8 非常感谢你的帮助!
Steps
2019-01-27 02:10:32 +08:00
@boks #8 再问一下,我的 sql 应该 怎么写 日期来查询?
```
SELECT * FROM `logs` WHERE time > '2019-01-26 01:00' AND time < '2019-01-26 01:30';
```

查询这里日期 我不晓得该怎么去写。。。
KasuganoSoras
2019-01-27 04:31:41 +08:00
https://github.com/kasuganosoras/SomeCodes/blob/master/v2ex_530931.php

善于思考
另外你完全可以用 while(true) 配合 sleep 实现每 30 分钟查询一次 SQL,没必要这样
Steps
2019-01-27 11:09:09 +08:00
@KasuganoSoras #12 可是我的日志在数据库里啊,
Steps
2019-01-27 11:58:20 +08:00
@KasuganoSoras #12 7 楼 的代码已经帮我解决大部分的问题了,只是 查询语句 开始日期和结束日期 还不能写对。
Steps
2019-01-27 12:32:55 +08:00
@boks #7
@KasuganoSoras #12

```
$start_date = date('Y-m-d H:i:s', $i);
$end_date = date('Y-m-d H:i:s', $i + ( $map[$Range] ) );
```

已经解决了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/530931

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX