通过PHP邮件发送电子邮件很慢

时间:2011-06-17 01:27:08

标签: php

我有一个拥有100万+会员的大型主板,我在向每个会员发送电子邮件之间遇到了很大的延迟。按照目前的速度,我花了3个月的时间向所有100万会员发送电子邮件。

我的机器(专用):

  • dual quad xeon
  • 32演出的公羊
  • Centos 5.4
  • vBulletin

我尝试过多种方式配置它仍然很慢。

决议是在当地完成的,所以我不认为这是问题所在。有什么建议吗?


vBulletin显示它发送电子邮件(一次500个),所以我知道脚本没有超时或内存问题。要完成500页,需要10分钟。我正在使用PHP的mail()函数,这是除SMTP之外的唯一其他选项。以前的服务器我没有自己配置,它一直很快。现在用sendmail(PHP的邮件功能)来尝试它是如此之慢。

4 个答案:

答案 0 :(得分:4)

检查您的/etc/hosts文件。

如果您的外部IP地址条目指向您的本地主机名,例如:

75.23.123.21 my-server-hostname

将其更改为:

127.0.0.1 my-server-hostname

然后再次尝试运行PHP mail()函数。

答案 1 :(得分:2)

我要说的是,如果你有100万订阅者需要达到,也许你最好不做自己。相反,为什么不使用像Mailchimp这样的服务,主要关注的是发送电子邮件。

考虑优势:

  1. 您不必担心带宽,基础设施和维护问题。

  2. 您可以全面分析您的电子邮件广告系列的效果以及列表的健康状况 - 您说您有一百万封电子邮件,但有多少邮件会反弹?打开了多少?什么是每个国家的开放率?,有多少被标记为垃圾邮件等?

  3. 根据您的业务,您可以对广告系列进行A / B测试并优化读取/点击/转化。

  4. 您显然需要为此服务支付额外费用,这与您当前的托管费用是分开的,但使用Mailchimp,您需要支付所使用的费用。此外,如果你可以达到一百万人,你可能想出如何货币化(如果没有,你真的应该)。因此,使用第三方服务可能会收回成本。

    Mailchimp是众多服务中的一种(我提到它是因为我使用它并且非常满意)。您可能需要查看SendGridCampaign MonitorAweber并权衡利弊。

    可能不是你期待的答案,但这只是我的0.02美元。

    P.S:Mailchimp还为您提供了API,因此您可以将您的应用与其服务无缝集成。

答案 2 :(得分:2)

来自PHP Manual

值得注意的是,mail()函数不适合循环中的大量电子邮件。此功能打开和关闭每个电子邮件的SMTP套接字,效率不高。

要发送大量电子邮件,请参阅» PEAR::Mail» PEAR::Mail_Queue个包。

答案 3 :(得分:1)

我远不是专家,但mail()函数比普通的Web函数使用更多的CPU和内存,但是有100万用户可能已经在您的服务器上有很大的负载(CPU和IO)。这可能会影响发送电子邮件的速度,特别是如果您使用的是旧的Xeon。

据我所知,双四核Xeon是相对较新的,发送这些电子邮件的时间不应该接近任何地方。

据我所知,低端单CPU专用服务器应该能够每分钟发送大约500-700封电子邮件......但这是一个专门用于发送电子邮件的系统。在中档服务器上,比如我怀疑你,我希望它可以在几个小时而不是几个月内发送电子邮件。

这可能是一个配置或负载问题,可能在许多不同的层面上。