来自API和本地数据库的PHP提醒

来自API和本地数据库的PHP提醒,php,Php,我正在联系一个PHP API,该API返回一个包含以下信息的项目循环: [domain_name] => domain.co.uk [expiry_date] => 2016-06-18T02:27:04 然后我有一个表,其中包含域,提醒1,提醒2,提醒3 我将全天、每天轮询此URL,并希望在到期日前30天、7天和1天发送“续订提醒”-每个提醒都将存储在我的数据库中(提醒1、提醒2和提醒3) 检查提醒是否已发送的最佳方法是什么?我建议您稍微更改数据库结构以适应此解决方案。 例如,您

我正在联系一个PHP API,该API返回一个包含以下信息的项目循环:

[domain_name] => domain.co.uk
[expiry_date] => 2016-06-18T02:27:04
然后我有一个表,其中包含
提醒1
提醒2
提醒3

我将全天、每天轮询此URL,并希望在
到期日前30天、7天和1天发送“续订提醒”
-每个提醒都将存储在我的数据库中(
提醒1
提醒2
提醒3


检查提醒是否已发送的最佳方法是什么?

我建议您稍微更改数据库结构以适应此解决方案。 例如,您有以下表格:

表域:

+----+----------------------+
| id |      domain_name     |
+----+----------------------+
|  1 | domain1.com          |
+----+----------------------+
|  2 | domain2.com          |
+----+----------------------+
|  3 | domain3.com          |
+----+----------------------+
表域\u到期

+----+--------------+----------------------+
| id |  domain_id   |     expiry_date      |
+----+--------------+----------------------+
|  1 | 1            | 2016-07-01 11:22:24  |
+----+--------------+----------------------+
|  2 | 1            | 2017-07-01 11:22:24  |
+----+--------------+----------------------+
|  3 | 2            | 2016-08-01 11:22:24  |
+----+--------------+----------------------+
表格提醒:

+----+-----------+---------------+------------+--------+
| id | expiry_id | reminder_type | date_sent  | status |
+----+-----------+---------------+------------+--------+
|  1 | 1         | 1             | 2016-06-01 | 1      |
+----+-----------+---------------+---------------------+
|  2 | 1         | 2             | 2016-06-23 | 1      |
+----+-----------+---------------+---------------------+
|  3 | 2         | 1             | 2016-08-01 | 0      |
+----+-----------+---------------+---------------------+
现在,您应该有一个每天/每晚运行的cron(比如在12:00 AM),这个cron应该执行以下操作:

1-提取域及其最新到期日

2-检查域的到期日是否与域到期表中的记录匹配,如果匹配则不执行任何操作,如果不匹配则添加具有域id和新到期日的新记录

3-根据域的最新到期日发送提醒

4-将提醒发送过程的结果插入到提醒表中

到期日\u id

提醒\u类型(1、2或3)

发送提醒的日期,
date\u发送的日期

状态(1=成功,0=失败)

更新


我更新了我的答案,以允许解决方案保留历史记录。

您是否在第一次拉取后设置了
提醒1
提醒2
提醒3
的值?或者当你发送提醒时你是这样做的吗?我还没有做到这一点,只是yetCool,但你是坚持那个数据库结构还是可以改变它以适应另一个解决方案?我可以改变它,没有任何设置Stone我可以继续吗,或者你有更好的主意吗?好的,如果它被更新,显然,这将把到期日改为+X年。那么我们该怎么办?在续签的情况下,即更改
到期日
,那么您应该在更新
域中的记录
表reset records=delete records之后,重置与更改的
域id
对应的
提醒
表记录,您想保留这些提醒表记录以用于日志记录吗?是的,我更愿意将它们作为待办事项保存,让域表中的
提醒类型
列,然后让另一个表作为发送提醒的历史记录/日志,怎么样