我正在创建一个系统,其中会定期发送数千封电子邮件的列表,我知道PHP中的mail()函数非常繁重,特别是如果同时调用它太多次了.
大致我的系统工作方式是,我在MysqL中创建电子邮件队列,并使用mail()以25个批次发送它们,从表中删除前25个发送的.我在每组25之间等待2秒.
这对服务器来说是否太费力了,或者我可以进一步推动它?
可以说每秒50?或者有更好的方法可以在更短的时间内发送许多电子邮件,而不会牺牲服务器性能.
我有一个没有任何mail()调用限制的专用服务器.
请看j08691关于性能的答案,但是为此目的使用mail()的其他问题包括:
>可扩展性(你会碰到最终没有SMTP服务器可以处理的问题,而你已经在考虑它了)
>完整性 – 在滚动自己的群发邮件时,您更有可能被标记为垃圾邮件,特别是使用邮件,因为它使用本地sendmail设计.
>成本/收益和投资回报率 – 可靠的群发邮件使其正确且具有竞争力.在某些时候,您每小时支付更少的费用来维护您的邮件服务器,当它崩溃,离开黑名单,手写电子邮件布局,一般保养等等,而不是您为群发邮件服务付费.
总的来说,最大的问题是你必须自己完成所有的工作,你可能会被标记为垃圾邮件,因为不支付能够每秒发送数百封电子邮件而不是每分钟发送数百封电子邮件的服务当PHP不忙于处理它为您的Web应用程序处理的所有其他内容时.
个人轶事(不是对SES的认可,只是群发邮件):我们有一个客户,每个广告系列发送了10万封电子邮件,每天最少有1到3个广告系列.他们开始抱怨客户在2天后收到有关“每日优惠”的电子邮件.这不是因为Mailer库很慢(即使这个应用程序避免使用普通邮件),也不是因为它无法确保在电子邮件无关之前为每个广告系列发送所有电子邮件.我们将它们切换到SES(在我们的最后进行了一些优化,但并不多),他们可以在一小时内清除一个活动.