使用php(在wordpress中)发送电子邮件时Nginx超时,但邮件仍然发送

时间:2013-07-26 10:22:30

标签: php email nginx

我在我的服务器上试验过一些wordpress插件和一个原始的php mail()脚本,它运行Nginx,php5 fastcgi。

基本上,当脚本尝试使用php的mail()函数发送电子邮件时,页面将处于加载状态,直到最终出现Nginx 504 Gateway Time-out错误页面。

奇怪的是,电子邮件仍然正常发送,但页面挂起的事实促使用户反复点击"发送"按钮经常我们会收到几封相同的电子邮件。

我目前无法访问我的nginx / php错误日志,因为我在工作时SSH / ftp不起作用,但我会在可能的时候发布任何相关信息。

与此同时,对于上述情况有一个简单的解释吗?

更新

以下是来自mail.log的一些示例日志条目。似乎与域名不合格有关。我该如何解决? (道歉可能是服务器故障的一个)

我有很多这些(电子邮件地址已编辑):

Jul 27 17:26:27 vps sm-mta[28178]: r6NNcp6u021157: to=<user@email.co.uk>, ctladdr=<www-data@sergeserver> (33/33), delay=3+15:47:36, xdelay=00:02:06, mailer=esmtp, pri=47557620, relay=email.co.uk. [62.116.143.15], dsn=4.0.0, stat=Deferred: Connection timed out with email.co.uk.

其中一些:

Jul 27 17:40:01 vps sm-msp-queue[28198]: My unqualified host name (sergeserver) unknown; sleeping for retry
Jul 27 17:41:01 vps sm-msp-queue[28198]: unable to qualify my own domain name (sergeserver) -- using short name

1 个答案:

答案 0 :(得分:0)

你可以尝试增加这些变量,我不知道实际的默认值,通常是30或60秒左右。

client_header_timeout N;
client_body_timeout N;
send_timeout N;
fastcgi_read_timeout N;

您可以在发送电子邮件的位置设置它们,这样您就不会将其设置为所有位置的默认值。
当然,你应该用一段时间来替换N,例如30s 30秒或2m 2分钟。