发送 SMTP 电子邮件会阻止 HTTP 请求

Posted

技术标签:

【中文标题】发送 SMTP 电子邮件会阻止 HTTP 请求【英文标题】:Sending SMTP Emails block HTTP request 【发布时间】:2013-07-29 15:30:50 【问题描述】:

我有一个调查程序 (limesurvey) 在我的服务器 (Apache) 上运行,并且 SMTP 电子邮件设置在不同的服务器上。我想向一群人(大约 10.000 人)发送电子邮件邀请。每次我从调查程序(使用 smtp 电子邮件)发送一组电子邮件(20-500 封电子邮件)时,在此“发送时间”期间,对调查程序的所有页面请求都被阻止。发送完邮件后,人们可以再次看到请求的页面。

我想知道这是我使用的程序的问题,还是我的 SMTP 电子邮件服务器中的设置问题,或者可能是我的 Apache 服务器上的设置问题?有没有人遇到过同样的问题,有解决办法吗?

【问题讨论】:

【参考方案1】:

几乎可以肯定,您使用的是标准的基于文件的会话。当您的邮件发送脚本运行时,它会锁定会话文件,这意味着对使用该特定会话 ID 的任何其他启用会话的脚本的任何其他并行请求都将被锁定。

您需要通过在适当的位置(例如,在任何长时间运行的代码部分/脚本之前)添加 session_write_close() 调用来释放会话锁定。这将释放锁并允许其他并行请求继续进行。

【讨论】:

以上是关于发送 SMTP 电子邮件会阻止 HTTP 请求的主要内容,如果未能解决你的问题,请参考以下文章

如何阻止IIS SMTP服务器发送退回电子邮件?

通过 GoDaddy 上的 gmail SMTP 发送电子邮件 [关闭]

在不阻止的情况下发送批量通知电子邮件

SMTP和HTTP协议一样都属于请求应答式协议

如何通过在C#中向smtp服务器发送请求来检查现实世界中是否存在电子邮件地址

php利用smtp类轻松的发送电子邮件