我正在构建一个接受用户注册的脚本,并在注册后向用户发送一封电子邮件以进行电子邮件验证。现在,在用户登录时验证电子邮件后,当自动电子邮件发送给与用户在站点上交互的其他用户时,用户会执行各种事件。
例如,当用户向站点上的关注者发送私有(private)消息时,还会向关注者的电子邮件地址发送一封自动电子邮件,通知他执行的用户事件。
现在假设站点上有大约 1000 名用户,他们每天执行大约 2000 到 5000 次发送自动电子邮件的事件。
我正在使用 codeigniter
来构建我的网站,我想知道我可以设计系统的最佳方法,以便正确无误地发送电子邮件。
最佳答案
似乎是事件/消息队列的情况。
Web 生成的事件 - 注册、向关注者发送直接消息等 - 将消息/任务/项目添加到工作/消息队列中。 cron 进程使用队列,实际执行发送。请注意,此处的“消息”只是一个对象或数据库记录,其中包含足以执行指定任务的信息:将类型 X 的消息从发件人/用户 Y 发送到收件人/用户 Z 等。它甚至可以包含当前状态的审计字段,项目何时添加到队列中,何时完成等。可能在一段时间后队列中已完成的任务被清除。
从好的方面来说,您的 Web 进程(注册等)不会等待这些消息发出,因此在浏览器端等待的客户端会得到更快的 Web 响应。
不利的一面是,Web 进程确实无法确定任务是否已执行;它所知道的只是请求已传递到队列以进行最终处理。
不过,您可以向用户提供报告待处理/完成请求状态的 Web 界面,这可能就足够了。
只是大声思考...;-)
关于php - 通过 php 和 codeigniter 批量发送电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6640852/