【问题标题】:PHP and Apache block while i'm sending a email using smtp当我使用 smtp 发送电子邮件时,PHP 和 Apache 被阻止
【发布时间】:2012-12-25 07:23:17
【问题描述】:

我正在使用 php 5.3 apache 2.2 和 phpmailer 库使用 smtp 发送邮件,过程正常。

问题是使用 smtp 发送电子邮件需要一些时间,而当这种情况发生时,apache 不会处理任何其他请求。

【问题讨论】:

  • 排队,然后使用后台进程发送。
  • 如果 Apache 阻塞,可能是配置错误。听起来这属于服务器故障。
  • "排队,然后使用后台进程发送"....我该怎么做?

标签: php apache phpmailer


【解决方案1】:

我假设您的意思是处理电子邮件请求的实例需要很长时间才能完成 - 而不是阻止 weberver 的所有实例?后者应该永远不会发生,除非所有 PHP 代码之间都存在共享互斥锁(即使这样,它只会影响对 PHP 页面的请求,而不是对静态内容的请求)。

你能说明它实际需要多长时间吗?

MTA(邮件传输代理)所有都是关于排队邮件的,并且为此进行了高度优化 - 所以 Frank Farmer 的建议是一个非常糟糕的建议。

如果您能向我们提供有关操作系统和 MTA 所在位置的线索,将会很有帮助。

IME,长时间的延迟可能是由错误的 DNS 查找造成的 - 您是在邮件配置中使用 IP 地址还是 IP 名称?您是否为本地 MTA 配置了智能中继(弄错通常意味着邮件会在很长一段时间后才被发送)。

您检查过您的 MTA 日志吗?

C.

【讨论】:

  • 实际上,在连接到 smtp 服务器、发送数据时,发送邮件需要 5 到 15 秒... MTA?...我不知道...我'我在 php 中较新,服务器是 linux 共享主机
  • 邮件传输代理的 MTA statnds - 它是执行所有邮件路由/排队的守护进程。如果您在共享托管平台上,那么您将无法调试故障,也无法修复它。向您的提供商投诉。
猜你喜欢
  • 1970-01-01
  • 2013-07-29
  • 2015-04-01
  • 1970-01-01
  • 2020-12-13
  • 2014-06-11
  • 2012-01-26
  • 2012-03-19
  • 2013-09-19
相关资源
最近更新 更多