我正在寻找一个电子邮件库来建立我们公司内部的通讯系统。 它应该支持消息队列(向队列发送邮件,在后台自动发送邮件)而不会阻塞网络服务器。 所以我认为后台处理应该作为服务器上的后台服务运行, 类似于aspmail,但为PHP。php:寻找支持邮件排队的电子邮件库
有什么建议吗? 谢谢
我正在寻找一个电子邮件库来建立我们公司内部的通讯系统。 它应该支持消息队列(向队列发送邮件,在后台自动发送邮件)而不会阻塞网络服务器。 所以我认为后台处理应该作为服务器上的后台服务运行, 类似于aspmail,但为PHP。php:寻找支持邮件排队的电子邮件库
有什么建议吗? 谢谢
我已经使用PEAR的Mail_Queue一次排队了200,000多封邮件。即使使用自定义内容,填充数据库也非常简单快捷,然后一个相当简单的脚本可以发送大约250次 - 如果平均负载不太高。然后它循环并发送下一批。它从后台运行,并且易于设置,以便如果队列表为空,则在再次检查之前暂停片刻(因为每秒检查几次对任何人都没有帮助)。
同时检查机器的负载平均值的好处是,它只会在队列中紧缩而不会出现自创的资源不足的问题。
Mail_Queue tutorial为您提供了几乎所有您需要的东西 - 只需循环“send_messages.php”脚本(从命令行更好),直到数据库队列为空,然后暂停一会儿 - 再循环。
我建议使用Gearman建立一个自动守护程序,等待您的Web服务器提交的作业。
有一个好的文章:http://kevin.vanzonneveld.net/techblog/article/create_daemons_in_php/解释如何创建纯PHP代码的守护进程。
在Web服务器端,你只需创造就业机会(Gearman的客户端),以及异步排队他们到的Gearman守护进程。 然后你有你的邮件程序php守护进程等待作业(gearman worker),并在队列中可用时执行它们。
如果你有一个庞大的邮件量发送,你甚至可以在多台服务器,将等待在同一Gearman的作业队列,以优化电子邮件处理部署的工人。
它应该支持消息队列(向队列发送邮件,在后台自动发送邮件)而不会阻塞网络服务器。所以我认为后台处理应该作为服务的后台服务运行
WTF?管理队列是电子邮件系统的工作 - 它的设计设计要做 - 它不是应用程序与它交谈的责任。如果您的邮件服务器在您每次发送邮件时都会阻止,则会出现很错误。
这听起来像你正在尝试写自己的MTA,而不是固定有什么不对您当前的规定。
如果您需要提供离线功能,然后安装在PHP运行的机器上的MTA。
你可以使用redis为您message queue:
Redis的速度非常快,并积极开发的数据结构的服务器。用redis写一些东西很容易。为什么我喜欢Redis其他消息队列:
的Redis:
一个开源的,先进的 key-value存储。因为 键可以包含字符串,散列, 列表,集合和有序集合,所以它通常被称为 作为数据结构服务器。
这是非常强大的。
make
。make
编译。由于需要什么的性质,我不认为这是一个专门为MTA职责开箱即用的解决方案,但是我可能是错的。
我已经构建了类似的最近,它涉及将电子邮件发送到一个字段的数据库队列,以显示它是否已发送,然后运行CRON作业来处理发送脚本的设置批次,发送这些电子邮件,并标记为发送,冲洗并重复。
有兴趣通过电子邮件/ MSN与你聊天,看看你已经为系统计划了什么,因为我基本上都在做同样的事情。
+1对于Gearman建议 – 2011-02-07 12:05:53