我目前正在研究一个社交媒体网站的电子邮件通知,我想在用户不查看网站时(至少在一定时间内,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