我目前正在处理社交媒体网站的电子邮件通知,我想在用户未查看网站时向用户发送电子邮件通知(至少在一段时间内,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
在我的玉米作业php脚本中,我会检查interval between the current time and the comment_send_time is greater than 30mins
是否view=n
email=n
并且cron作业将向user_B发送新评论的电子邮件通知,成功发送电子邮件后,将电子邮件更新为n
,以防止发送冗余电子邮件通知。
我担心的是,如果我每30分钟运行一次cron作业,是否会损害服务器性能,并且cron作业将成为处理此任务的正确方法以及其他选项
答案 0 :(得分:1)
就个人而言,我已经将作业设置为每分钟运行并让脚本运行一个非常轻量级的SQL查询来检查新警报。
如果您的脚本很重并且运行时间超过1分钟,那么请将其缩小或进行性能调整。
要直接回答您的问题,是的,它会影响效果。但是,如果您有一个轻量级脚本,则该命中率可以忽略不计。如果您每分钟发送数千封电子邮件,则应该将该设备扩展到自己的服务器。此时,您应该赚足够的钱来支持其他服务器,或者您需要重新考虑提醒用户的策略。如果您需要开始扩展,那么请开始查看消息队列,以及RabbitMQ或Laravel等任务/工作队列