我开发了一个PHP网站,通过使用PHPMailer的电子邮件向订阅者发送简报。
我们将它托管在虚拟主机中并且运行正常。 我们搬到了一个新的专用服务器,一切都运行得更快,除了电子邮件发送。
现在它慢得令人无法接受。发送每封电子邮件需要5秒钟。 (我们现在有200名订阅者,而且还在增长)
我已经跟踪了PHP代码,我发现问题是与外部SMTP服务器的通信(我们使用TurboSMTP)。通信中的每一步都需要1秒(登录,验证,发送......)
我已经使用curl_exec函数来查看连接到某些服务器的时间,我在TurboSMTP上获得1.2秒,而在谷歌,Gmail和许多其他众所周知的网站上获得的时间不到0.1秒。
我确认Windows中的Hosts文件已正确设置此服务器。 我尝试使用IP地址而不是服务器名称,我得到相同的结果。 对TurboSMTP服务器(pro.turbo-smtp.com)的“ping”速度很快,与IP 199.187.175.15一样快
我的服务器是带有IIS的Windows Server 2008 R2。
我已将新服务器中的PHP ini配置与旧配置进行比较,我没有看到实质性差异...(我没有旧服务器的ini文件,但我可以看到PHP的配置
有什么想法吗?我已经浪费了两个星期的时间和我的用户失去耐心...... :( 提前谢谢!
答案 0 :(得分:1)
显然MonkeyZeus是对的。 我用Wireshark来扫网,看看花了多长时间......我发现没有什么特别慢的......
只是花时间握手和沟通本身。
问题是我将服务器从加利福尼亚的一个托管服务器迁移到布宜诺斯艾利斯的专用服务器,而SMTP服务器位于纽约州。
信不信由你,距离确实很重要。
与服务器的每次通信都意味着要走10.000公里,另外10.000公里后(假设我们有一条从布宜诺斯艾利斯到纽约的光纤),即使在光速下,这个20.000公里的往返行程也意味着接近70毫秒。 ..如果我们做数学......发送电子邮件需要几秒钟。 HTH