通过外部SMTP服务器发送电子邮件时,PHP速度太慢

通过外部SMTP服务器发送电子邮件时,PHP速度太慢,php,performance,email,smtp,Php,Performance,Email,Smtp,我已经开发了一个PHP站点,使用phpMail通过电子邮件向订阅者发送新闻稿 我们把它放在一个网络主机上,运行得很好。 我们换了一台新的专用服务器,除了发送电子邮件,其他一切都运行得更快 现在速度慢得令人无法接受。发送每封电子邮件需要5秒钟。(我们现在有200个订户,而且还在增长) 我跟踪了PHP代码,发现问题在于与外部SMTP服务器的通信(我们使用TurboSMTP)。通信中的每个步骤(登录、身份验证、发送…)都需要1秒的时间 我使用curl_exec函数来查看连接到一些服务器的时间,Turb

我已经开发了一个PHP站点,使用phpMail通过电子邮件向订阅者发送新闻稿

我们把它放在一个网络主机上,运行得很好。 我们换了一台新的专用服务器,除了发送电子邮件,其他一切都运行得更快

现在速度慢得令人无法接受。发送每封电子邮件需要5秒钟。(我们现在有200个订户,而且还在增长)

我跟踪了PHP代码,发现问题在于与外部SMTP服务器的通信(我们使用TurboSMTP)。通信中的每个步骤(登录、身份验证、发送…)都需要1秒的时间

我使用curl_exec函数来查看连接到一些服务器的时间,TurboSMTP的时间是1.2秒,Google、Gmail和许多其他知名网站的时间是0.1秒

我已验证Windows中的主机文件是否已正确设置此服务器。 我尝试使用IP地址代替服务器名,得到了相同的结果。 对TurboSMTP服务器(pro.turbo smtp.com)的“ping”很快,对IP 199.187.175.15的“ping”也很快

我的服务器是带有IIS的Windows server 2008 R2

我比较了新服务器和旧服务器中PHPINI的配置,没有发现实质性的差异。。。(我没有旧服务器的ini文件,但我可以看到PHP的配置)

有什么想法吗?我已经为此浪费了两周的时间,我的用户正在失去耐心…:(
提前谢谢!

显然,蒙基宙斯是对的。 我用Wireshark剪下网,看看是什么花了这么长时间…我发现没有什么特别慢的

只是握手和交流本身需要时间

问题是我将服务器从加利福尼亚的一个主机迁移到布宜诺斯艾利斯的一个专用服务器,SMTP服务器在纽约

信不信由你,距离真的很重要

与服务器的每次通信意味着要走10000公里,再返回10000公里(假设我们有一根从布宜诺斯艾利斯直达纽约的光纤),即使是在光速下,这20000公里的往返行程意味着将近70毫秒……如果我们计算一下……发送电子邮件需要几秒钟。
HTH

如果您在提交表单时发送电子邮件,那么您的用户将受制于事件链中最慢的链接;在您的情况下,TurboSMTP。正确的方法是创建电子邮件队列并运行一个计划任务,在自己的时间发送电子邮件。这将有助于您将关注点和问题分离开来根据需要调整电子邮件内容。是的。你是对的。但我仍然有发送电子邮件的时间,这是一个很大的问题。200封电子邮件,每封5秒,等于16分钟……如果我们有1000个订户,则超过一个小时……通讯的发送时间至关重要。我们必须在订户的inb中发送新闻报道oxes在上午8:00之前…用户还必须告诉systema何时可以发送时事通讯…这就是我们使用表单的原因…此外…我认为问题不在于TurboSMTP。当我在其他web服务器上安装系统时,它可以正常工作…(感谢您的回答)我不确定我是否理解您的整个过程。将每个收件人以密件传给一封电子邮件,只收到一封5秒钟的电子邮件是否可行?嗯……不。每封电子邮件都是个性化的。订阅者可以选择接收哪些部分(新闻稿有多个部分),并在每封电子邮件中添加跟踪代码。我们有一个界面,可以在“编辑”时将新闻、图像、评论等上传到服务器新闻稿的一部分被关闭,然后发送给订阅者。你能找出你的新专用服务器与TurboSMTP服务器的物理距离吗?服务器之间的地理距离确实会有所不同。你可以做很多事情来解决延迟问题。即使不运行你自己的MTA,你也可以d在信封bcc中批处理通讯员,和/或在并发线程中处理发送。即使在70毫秒RTT下,发送电子邮件的速度也非常慢(大约5 RTT+带宽成本,如果使用TLS,则为8 RTT)