PHP中的邮件队列
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP中的邮件队列相关的知识,希望对你有一定的参考价值。
我正在开发一个处理大量电子邮件发送的应用程序,并且我正在寻找最小的电子邮件队列解决方案。
发送代码将执行的操作是从队列中获取“收件人”,“发件人”,“主题”,“文本”,“格式”字段,生成标题,并发送电子邮件。如果发送不成功,则可以重试。我也想要一个优先级系统,至少要有两个优先级。
我一直在想,我的想法是:
- mysql:由于系统中的所有其他内容都通过MySQL,因此我想到了将MySQL表用作队列。问题是发件人必须始终在桌子上看,这会导致处理器高负载。
- 文件:队列可以通过目录中的XML文件完成。这对一切都不利(性能,服务器寿命...)
- [FIFO:我在C应用程序中使用了FIFO,但是对于高级应用程序来说,这可能太低了,原始数据的处理有点困难(大小,参数的顺序...)。
因此,我正在寻找有关如何轻松实现此电子邮件队列的想法。该系统是用php完成的,如果有解决方案,我希望它可以使用PHP。
提前感谢。
我已经为PHP开发了一个电子邮件队列系统,该系统可以完全满足您的要求,请在此处查看。 https://github.com/tin-cat/emailqueue
我已经做了类似的事情,每天发送大约200,000封电子邮件。由于它们不是时间紧迫的,因此我生成了它们(使用Mail_Mime),然后将它们全部存储到数据库中,并使用Mail_Queue进行了发送,并使用Shell脚本将其发送出去,如果该脚本的平均负载为机器还可以。
[今天,我将使用围绕Swiftmailer和White October SwiftMailer DB Bundle的基于Symfony的系统来进行此操作。
要使其避开数据库(虽然不是最佳数据库,但它确实可以正常工作),我将使用DBBundle作为基础,而是使其通过队列系统,例如Beanstalkd(将其发送到队列而不是数据库表的艰巨工作)。如果发送系统认为作业“太旧”,则可以将其删除。向队列作业添加优先级也非常容易-它内置在Beanstalkd中。
[您也可以选择简单地将消息放入队列中,“向用户X发送一封更新电子邮件-且队列运行者在发送之前就转到原始数据库来组装电子邮件。
以上是关于PHP中的邮件队列的主要内容,如果未能解决你的问题,请参考以下文章