• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

关于给用户发送邮件的一些问题

php 搞代码 4年前 (2022-01-25) 17次浏览 已收录 0个评论
文章目录[隐藏]

现在要给全部用户或者指定用户发送邮件,“发送”操作是由我们后台人员触发的。

发送操作提交后,我们就要给用户发送了,在发送过程中可能会存在一个问题,就是发送了一段时间后,程序因某些原因死掉了,这样就导致一些用户没有收到邮件,所以我的想法是发送前先把数据库里的用户全写入到一个文件中,发送时从文件中取用户,然后再弄个用户发送日志以记录哪些用户发送了,这样出问题后,可以从出问题的“那个地方”接着执行发送…..

不知道我的想法行不行,另外我担心“把数据库中的用户写入到文件中”这个过程所花费的时间会很长,从而导致性能上会存在隐患。谢谢大家讨论我的想法,给些意见或指点!

回复内容:

现在要给全部用户或者指定用户发送邮件,“发送”操作是由我们后台人员触发的。

发送操作提交后,我们就要给用户发送了,在发送过程中可能会存在一个问题,就是发送了一段时间后,程序因某些原因死掉了,这样就导致一些用户没有收到邮件,所以我的想法是发送前先把数据库里的用户全写入到一个文件中,发送时从文件中取用户,然后再弄个用户发送日志以记录哪些用户发送了,这样出问题后,可以从出问题的“那个地方”接着执行发送…..

不知道我的想法行不行,另外我担心“把数据库中的用户写入到文件中”这个过程所花费的时间会很长,从而导致性能上会存在隐患。谢谢大家讨论我的想法,给些意见或指点!

和@舞林 同学的想法有点相似:

  • 把待发的邮件,存储到列表(Lists)中,通过lpush插入到Redis消息队列中
  • 负责发送邮件的代码中通过BRPOP依次消息队列中的内容并进行处理,如果没有新邮件则会阻塞等待直到有新的消息

这样的话不管程序死掉或者什么原因都不会千万消息丢失,同时也可以不用另外加一个定时任务


相比于写文件或者是其它的方法,Redis来&源gao@dai!ma.com搞$代^码%网搞gaodaima代码是目前最合适的

Redis是一个开源、支持网络、基于内存、键值对存储数据库

参考:http://zh.wikipedia.org/zh/Redis

我的做法是邮件队列,放redis,crontab每分钟发送,脚本起来的时候发现上个脚本还在跑就退出,为了避免异常,脚本最多执行110秒。做好失败的监控,没啥问题。

还有什么呢,继续吧…


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:关于给用户发送邮件的一些问题

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址