[英]How to group time intervals in php/mysql and get statistics based on those time groups?
[英]Retrieve a list of records based on time intervals (PHP/MySQL)
在我的数据库表中,我有一个名为“ start_datetime”的DATETIME字段。
时间部分始终基于5分钟间隔存储,没有秒,例如:15:25:00或12:10:00或17:30:00
现在,我需要设置一个CRON任务,该任务将在“ start_datetime”的前两天发送一封电子邮件。
这里有几个问题:
1)首先,我需要使用“ start_datetime”查找所有记录,该日期恰好是现在的2天(即运行查询的时间)
2)它应该忽略任何超过或少于2天的记录。 考虑到时间是基于5分钟的间隔,我只能假设CRON任务必须每5分钟运行一次? 这可能是一个问题,因为我的托管服务提供商仅允许CRON每小时最多运行一次。
那么解决这个问题的最佳方法是什么?
准确到5分钟间隔真的重要吗,还是可以提前55分钟发送该电子邮件,这是否可以接受?
如果是这样,您可以运行查询以选择将在下一小时内达到该两天标记的所有记录。
查询看起来像这样:(快速n脏,未经测试)
SELECT * FROM table
WHERE CURRENT_TIMESTAMP >= DATESUB(startDate, INTERVAL 49 HOUR)
AND CURRENT_TIMESTAMP < DATESUB(startDate, INTERVAL 48 HOUR);
由于您只能每小时执行一次cron,因此唯一的选择就是发送所选值的电子邮件,而start_datetime在2天2天1小时之间,或者您可以设置一个Web服务,每次距离您自己的个人电脑只有5分钟的路程,但不建议这样做。
您的提供商会允许脚本执行时间不受限制吗? 如果是这样,您可以创建一个脚本,该脚本通过sleep函数每五分钟查询一次数据库。
功能:
http://php.net/manual/zh/function.sleep.php
伪代码:
function query_db() {
//query code
}
for($i = 1; $i <= 60; $i++) {
query_db();
sleep(300);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.