根据时间间隔检索记录列表(PHP/MySQL)

根据时间间隔检索记录列表(PHP/MySQL),php,mysql,cron,Php,Mysql,Cron,在我的数据库表中有一个名为“start\u DATETIME”的DATETIME字段 时间部分始终以5分钟为间隔存储,没有秒,例如:15:25:00或12:10:00或17:30:00 现在我需要设置一个CRON任务,它将在“开始日期时间”前2天发送一封电子邮件 这里有几个问题: 1) 首先,我需要查找“start_datetime”正好在现在2天前(即运行查询的时间)的所有记录 2) 它应该忽略任何超过或少于2天的记录。考虑到时间是基于5分钟的间隔,我只能假设CRON任务必须每5分钟运行一次?

在我的数据库表中有一个名为“start\u DATETIME”的DATETIME字段

时间部分始终以5分钟为间隔存储,没有秒,例如:15:25:00或12:10:00或17:30:00

现在我需要设置一个CRON任务,它将在“开始日期时间”前2天发送一封电子邮件

这里有几个问题:

1) 首先,我需要查找“start_datetime”正好在现在2天前(即运行查询的时间)的所有记录

2) 它应该忽略任何超过或少于2天的记录。考虑到时间是基于5分钟的间隔,我只能假设CRON任务必须每5分钟运行一次?这可能是个问题,因为我的主机提供商最多只允许CRON每小时运行一次


那么,最好的方法是什么呢?

既然你只能每小时运行一次cron,那么你唯一的选择就是为所选值发送电子邮件,其中start_datetime介于2天到2天到1小时之间,或者,您可以设置一个web服务,该服务每5分钟就会从您自己的带有cron的pc上被调用一次,但不建议这样做。

您的提供商是否允许无限的脚本执行时间?如果是这样,您可以创建一个脚本,通过sleep函数每五分钟查询一次数据库

功能:

伪代码:

function query_db() {
  //query code
}

for($i = 1; $i <= 60; $i++) {
  query_db();
  sleep(300);
}
函数查询_db(){
//查询代码
}

对于($i=1;$i)来说,精确到5分钟的间隔是否真的那么重要,或者提前55分钟发送电子邮件是否可以接受

如果是这样的话,您可以运行一个查询,选择在接下来的一小时内达到该2天标记的所有记录

查询如下:(quick n dirty,untested)

从表中选择*
其中当前时间戳>=DATESUB(起始日期,间隔49小时)
和当前时间戳<日期子(开始日期,间隔48小时);

Lol很好!老实说,我不认为这有什么关系!那么这个SQL查询是什么呢?
SELECT * FROM table 
    WHERE CURRENT_TIMESTAMP >= DATESUB(startDate, INTERVAL 49 HOUR)
    AND CURRENT_TIMESTAMP < DATESUB(startDate, INTERVAL 48 HOUR);