基本上,我创建了一个邮件系统,如果他们自30天以来没有登录,就会向我的非活动成员发送邮件以在他们的帐户中进行活动。
我之前的登录日期在unixtimestamp中存储在我的数据库中,因此我编码如下。
select email from myusers where WHERE DATE_ADD(FROM_UNIXTIME(prelogin), INTERVAL 30 DAY) < CURDATE()";
但是这段代码在30天之后几乎每天都会发送连续邮件,因为我已经将cron设置为每天运行一次。
答案 0 :(得分:1)
假设您只想要每30天发送一封电子邮件,并且只有在30天内没有登录的情况下,我怀疑最简单的解决方案是让您的表中的另一个列称为某个内容比如last_email_sent_time
。
然后,只有在prelogin
和新列之后至少30天内才发送电子邮件。
并且,当您发送电子邮件时,请将该新列更新为当前日期,这样您就不会再打扰他们一个月左右。
另一方面,如果您只是希望在30天内没有登录后发送一次的电子邮件,那就类似了。
创建一个新列,指示已发送电子邮件,并且仅在该列为false(或N
或您想用于指示它的任何内容)时发送它。发送它会将该列设置为true,登录将其设置为false(以及更改prelogin
)。
如果您不想要添加额外的列(出于某些奇怪的原因),您可以在发送电子邮件时更新prelogin
,但这不是我觉得舒服的事情建议,因为它丢失了可能在其他地方使用(或有用)的信息。