【发布时间】:2014-03-20 16:42:07
【问题描述】:
上下文: 我目前正在我公司的一个网站/wep 应用程序上工作,该应用程序包含一个用于向某些用户发送大约 280 封电子邮件的页面。
在测试服务器上一切正常,但在生产服务器上,我们在函数中间出现超时(发送所有内容大约需要 5 分钟) 有些用户收到了邮件,有些则没有。
在测试服务器中,一切正常,我是收到所有邮件的人,没有错误,没有异常,没有超时。
通过查看我们的另一个网站,它使用几乎相同的代码具有相同的功能,我在 PageLoad 的开头看到了这一点:Server.ScriptTimeout = 600
问题:
我的发送邮件功能如下所示:
onclick()
{
foreach()
{
sendmail()
}
}
由于 foreach 完全迭代大约需要 5 分钟,按钮的 On_click 事件是否可能触发超时?
感谢您的帮助
注意:这是一个带有confirmMessage 的自定义按钮,它会阻止页面,直到事件clic 结束。
注 2:我在代码中看不到任何问题,因为重要的发送部分被复制到我们的工作应用程序 1 上,我也尝试了所有代码,同时只是评论 message.send() 函数并且没有根本问题。 这可能是我们在数据库中的邮件地址的问题,但除非我发送真实邮件,否则我无法测试它们,而且我不想发送真实邮件作为测试:)
【问题讨论】:
-
这么长的客户端脚本需要这样做吗? (是的,如果帖子是同步的,超时可能是原因)。你为什么不收集所有东西,用 AJAX 发送到服务器,然后在完成后得到响应(所有异步)。也可以看看this post。
-
这个页面没有长的客户端脚本,或者只是javascripts中的一些显示功能。我不认为使用 ajax 会改变我的情况。所有都是从后面的代码执行的,所以直接在服务器中执行。创建电子邮件接收者列表并创建所有邮件的功能需要大约 1 秒的时间来处理,然后它是迭代这个列表并为每次迭代发送 1 封电子邮件的函数,这需要花费大量时间,也在代码隐藏中。