当用户不浏览网站时,发送电子邮件通知的正确方式是什么?


what is a proper way of sending email notification when user is not viewing the site

我目前正在研究一个社交媒体网站的电子邮件通知,我想在用户不查看网站时(至少在一定时间内,30分钟,1小时等)向用户发送电子邮件通知

我正在考虑使用一个cron作业来发送那些电子邮件通知,并每30分钟触发一次cron作业。

假设用户A在2014/8/13 18:39:00评论了用户B,它将在数据库的评论表中有一行,如

comment_user   user_received        comment_send_time                  view_or_not(y/n)  email(y/n)
user_A           user_B             2014/8/13 18:39:00                    n                 n

在我的corn job php脚本中,我将检查interval between the current time and the comment_send_time is greater than 30mins,以及view=n, email=n和cron job是否要向user_B发送新评论的电子邮件通知,并在电子邮件发送成功后,将电子邮件更新为n,以防止发送冗余的电子邮件通知。

我担心的是,如果我每30分钟运行一次cron作业,它会损害服务器性能吗? cron作业是处理这个任务的合适方法吗?

就我个人而言,我会将作业设置为每分钟运行一次,并让脚本运行一个非常轻量级的sql查询来检查新警报。

如果你的脚本很重,运行时间超过1分钟,那就缩减它的规模或者调整它的性能。

直接回答你的问题,是的,它会影响性能。但是,如果您使用的是轻量级脚本,那么这种影响可以忽略不计。如果你每分钟发送数千封电子邮件,那么是时候将设备扩展到自己的服务器上了。到那时,您应该赚到足够的钱来支持另一台服务器,否则您需要重新考虑提醒用户的策略。如果你需要开始扩展,那么就开始关注消息队列和任务/工作队列,比如RabbitMQ或Laravel