Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过PHP邮件发送电子邮件很慢_Php - Fatal编程技术网

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

通过PHP邮件发送电子邮件很慢,php,Php,我有一个拥有100多万会员的大型董事会,在向每个会员发送电子邮件时,我都经历了巨大的延迟。按照目前的速度,我要花3个月的时间才能向100万会员发送电子邮件 我的机器(专用): 双四方xeon 32吉格内存 Centos 5.4 vBulletin 我尝试了很多方法来配置它,但仍然很慢 解决方案是在本地完成的,所以我认为这不是问题所在。有什么建议吗 vBulletin在发送电子邮件时显示(一次500封),因此我知道脚本没有超时或内存问题。完成一页500页,需要10分钟。我正在使用PHP的ma

我有一个拥有100多万会员的大型董事会,在向每个会员发送电子邮件时,我都经历了巨大的延迟。按照目前的速度,我要花3个月的时间才能向100万会员发送电子邮件

我的机器(专用):

  • 双四方xeon
  • 32吉格内存
  • Centos 5.4
  • vBulletin
我尝试了很多方法来配置它,但仍然很慢

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



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

检查您的
/etc/hosts
文件

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

75.23.123.21 my-server-hostname
将其更改为:

127.0.0.1 my-server-hostname

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

我想说的是,如果你有100万需要联系的订户,也许你最好不要自己联系。相反,为什么不使用像世卫组织这样的服务呢?世卫组织的主要重点是发送电子邮件

想想它的优点:

  • 您不必担心带宽、基础设施和维护

  • 你可以得到关于你的电子邮件活动表现和列表健康状况的全面分析——你说你有一百万封电子邮件,但有多少封回复了?开了多少门?每个国家的开放率是多少?有多少被标记为垃圾邮件等

  • 根据您的业务情况,您可以A/B测试您的活动并优化读取/单击/转换

  • 显然,你会为这项服务支付额外的费用,这与你目前的托管费用是分开的,但是使用Mailchimp你会为你所使用的东西付费。此外,如果你能接触到一百万人,你可能会想出如何将其货币化(如果不是,你真的应该)。因此,使用第三方服务可能会自行付费

    Mailchimp是众多服务之一(我之所以提到它,是因为我使用它并且非常满意)。你可能想看看,权衡一下你的利弊

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


    备注:Mailchimp还为您提供了一个新的功能,以便您可以无缝地将应用程序与他们的服务集成。

    我远非专家,但mail()函数使用的CPU和内存要比普通web函数多得多,但拥有100万用户的服务器上可能已经有了很大的负载(CPU和IO)。这可能会影响发送电子邮件的速度,尤其是如果您使用的是较旧的Xeon

    据我所知,双四元Xeon是相对较新的,发送这些电子邮件应该不会花太长时间

    据我所知,一个低端单cpu专用服务器应该能够每分钟发送500-700封电子邮件。。。但这是一个只发送电子邮件的系统。在像我怀疑你这样的中端服务器上,我希望它能够在几个小时内发送电子邮件,而不是几个月

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

    来自

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


    有关发送大量电子邮件的信息,请参阅、和软件包。

    是否已为该PHP脚本正确分配内存?@PhpMyCoder:您在说什么?是否连接到远程服务器以发送邮件?这可能与您的本地邮箱无关,而与远程终端有关。您是否查看了邮件日志中的时间戳,以确定在发送每封邮件的过程中,您在什么时候会遇到延迟?@zerkms-yes。我以前见过。这对我来说是一个在发布前思考的时刻。发现一个实例,并没有真正做出改进:500封电子邮件的测试开始:11:27结束:11:33你应该确保你的机器的不合格(短)主机名位于指向环回的/etc/hosts中,这里有更多详细信息:问题是我没有试图从中赚钱,我只是想和我的用户保持联系。我已经为这台服务器支付了相当多的费用,不妨充分利用它的潜力。这很公平。然而,如果我是你,我的网站上有一百万注册用户,我会花一些时间想出一种赚钱的方法(至少足以支付服务器/基础设施成本)。只是说:)我通常不会投票赞成那些提出完全不同方法的答案,但在这种情况下,这确实是向100万收件人发送电子邮件的正确方式。通过使用您自己的服务器,您为自己添加了大量工作(包括管理您的垃圾邮件声誉),并且您仍然有很高的机会无法收到您的电子邮件。我建议你咬紧牙关,使用Mandrill或Sendgrid来处理你触发的电子邮件,使用Mailchimp、Emma、Senditate、Bronto等服务来处理你的新闻稿。希望那些被否决的投票者能麻烦地提一提他们为什么投票否决这封邮件。