我在while循环中使用PhpMailer。基本上,我发送了大约80封电子邮件,每封电子邮件都不一样。所以我使用while循环来单独发送每封电子邮件。问题是这花了很长时间,以至于我的服务器超时。我现在正在和我的服务器人员讨论增加时间限制,但我怀疑他是否会这么做
我能做什么?
一般来说,在处理HTTP请求时应避免发送电子邮件。正如你所发现的,它最终会超时。你可以采取一些措施来减少这种情况,但你不会让它完全消失:
- 延长超时时间
- 发送速度更快,例如通过本地邮件服务器中继
解决此问题的正确方法是在HTTP请求期间仅触发消息的发送,并通过cron作业或其他执行实际发送的计划或排队任务进行实际发送。这样,你的触发器会做一些小而简单的事情,比如更新一个";发送时间";邮件列表记录中的时间戳,然后让您的计划任务检查要发送的内容,发送它们,然后将它们标记为已发送,以便以后的HTTP请求可以查看发送的状态。
有一个发送到PHPMailer中包含的邮件列表的例子,这正是您想要触发的事情。请注意,该代码没有引用$_GET
、$_POST
或任何其他用户输入,它完全由数据库中的内容驱动。