我创建了一个电子邮件程序,用于检查用户上次登录的时间,如果用户没有登录10天,则会向他/她发送电子邮件。 现在我希望系统检查同一个用户是否进行了两次,并通过电子邮件向他们发送不同的电子邮件。 表1用户:
id - name - loggedindate
0 john 7/11/2012
1 mark 7/6/2012
2 johnny 7/6/2012
3 bruce 7/2/2012
表2邮件程序字段如下:
id - days -emailtosend - numberoftimeseventhappens
0 4 hello 1
1 4 blabla 2
2 6 example 1
3 3 to 1
4 4 demonstrate 1
所以这里例如mark和johnny没有登录4天。
该事件第一次发生时,它会向他们发送电子邮件“hello”
第二次事件发生时,电子邮件需要发送“blabla”
所以我们说标记没有登录4天,第一封电子邮件就会发送
然后他在第5天登录,然后在另外4天后他没有登录,我想在桌面2上发送第二封电子邮件ID=2
该文件在cron上运行,每2小时检查一次
关于如何做的任何想法?我只是需要这样做的方式,而不是我自己可以编写的实际代码,我一直在把头发拉过来。
答案 0 :(得分:1)
向用户表添加一个新字段,用于跟踪发送给他们的最后一类电子邮件。下次您必须发送电子邮件时,您会发送“最后一封电子邮件+ 1”
答案 1 :(得分:1)
我建议您对数据集进行规范化。例如,您可以有三个表:
ACCOUNT
LOGIN
NOTIFICATION
结构可能如下:
ACCOUNT
-----------------
ID | USER | EMAIL
LOGIN
-----------------
ID | TIMESTAMP
NOTIFICATION
-----------------
ID | TIMESTAMP
现在,您可以拥有一个位于这三个表之上的视图,如果上次登录时间戳> =今天 - 4天,则只显示帐户ID。此外,您可以从通知中获取计数,以查看您之前通过电子邮件发送给用户的次数,或者您想要检查自上次通知发送以来已经过了多少时间,如果是5天则发送“blabla” ,但如果超过某个阈值,则发送“hello”。
所以你可以在以下时间发送电子邮件给“blablah”:
LOGIN.TIMESTAMP <= today - 4 days
AND LOGIN.TIMESTAMP > MAX(NOTIFICATION.TIMESTAMP)
AND MAX(NOTIFICATION.TIMESTAMP) - 2NDLARGEST(NOTIFICATION.TIMESTAMP) BETWEEN 5 AND 30
答案 2 :(得分:0)
Marc B回答它是正确的,但您还需要向用户添加另一个datetime列(即:last_email_sent)。 因为你的cron php文件应该做什么,所以检查自上次登录后多少天,如果last_email_sent&gt; = 4天或者它为null,则发送last_email + 1并更新last_email_sent(到今天的日期)和last_email(到last_email + 1)。 / p>