1

基本上,我正在创建一个邮件系统,如果他们自 30 天以来没有登录,则向我的非活动成员发送邮件以在他们的帐户中进行活动。

我以前的登录日期以 unixtimestamp 存储在我的数据库中,因此我编码如下。

  select email from myusers where WHERE DATE_ADD(FROM_UNIXTIME(prelogin), INTERVAL 30 DAY) < CURDATE()";

但是这段代码在 30 天后几乎每天都会发送连续邮件,因为我已将 cron 设置为每天运行一次。

4

1 回答 1

1

假设您只希望每 30 天发送一封电子邮件,并且只有在他们 30 天没有登录的情况下,我怀疑最简单的解决方案是在您的表中添加另一个last_email_sent_time名为.

prelogin 然后,仅在距新专栏至少 30 天后才发送电子邮件。

而且,当您发送电子邮件时,将该新列更新为当前日期,这样您就不会再打扰他们一个月左右了。


另一方面,如果您只想在他们三十天未登录后发送一次电子邮件,那是类似的事情。

创建一个指示电子邮件已发送的新列,并且仅在该列为假(或N您想用来指示它的任何内容)时发送它。发送它将将该列设置为 true,登录会将其设置为 false(以及更改prelogin)。


如果您不想添加额外的列(出于某种奇怪的原因),您可以prelogin在发送电子邮件时简单地更新,尽管我不建议这样做,因为它会丢失可能在其他地方使用(或有用)的信息。

于 2012-04-30T13:35:55.263 回答