SwiftMailer 的 SMTP 超时设置与什么有关?
What does SwiftMailer’s SMTP timeout setting relate to?
当使用 SwiftMailer 的 Swift_SmtpTransport
时,有一个 timeout
设置。
https://symfony.com/doc/current/reference/configuration/swiftmailer.html#timeout
这是指什么?它只是用于登录服务器的超时还是用于登录和发送消息的完整操作?
我遇到这个问题是因为我注意到如果您使用无效的 SMTP 凭据,脚本将在 30 秒后继续运行——这对于 public 网站来说太长了。在凭据无效(例如,它们被更改)或服务器停机的情况下,使用 setTimeout(5)
似乎更容易接受。
如果这只是登录SMTP 服务器,我认为5 秒绰绰有余。如果这也是发送消息,我仍然认为发送少量电子邮件是可以的。我已经完成了一些测试电子邮件,到目前为止看起来还不错,但我想在使用它之前先检查一下。
在PHP中使用流套接字时,有两个超时:
- 连接超时,(look at the timeout parameter)
- 在套接字上写入或读取数据时超时(使用fread或fwrite)
fread 文档说:
a packet becomes available or the socket timeout occurs (for network streams)
Swiftmailer 中的三个任务似乎使用了这个超时参数:
- 连接到 smtp 服务器超时。
- 写邮件超时。 (Here a code写数据超时设置示例)
- 第三个,整个过程取决于邮件的大小(如RFC2821中所述)
但是,如果您不想等待邮件发送完毕再向用户发送回复,您应该查看 the messenger component。您将拥有两个异步进程,而不是只有一个进程。您的控制器将不再等待邮件发送,它只会向信使组件发送一条消息(“请向该新用户发送注册邮件”)。 Messenger 组件将启动一些操作来发送此邮件。状态字段通常用于了解邮件是否已成功发送。 Fabien Patencier 写了一本书“Symfony the Fast Track”,其中包含一个有用且完整的示例。
当使用 SwiftMailer 的 Swift_SmtpTransport
时,有一个 timeout
设置。
https://symfony.com/doc/current/reference/configuration/swiftmailer.html#timeout
这是指什么?它只是用于登录服务器的超时还是用于登录和发送消息的完整操作?
我遇到这个问题是因为我注意到如果您使用无效的 SMTP 凭据,脚本将在 30 秒后继续运行——这对于 public 网站来说太长了。在凭据无效(例如,它们被更改)或服务器停机的情况下,使用 setTimeout(5)
似乎更容易接受。
如果这只是登录SMTP 服务器,我认为5 秒绰绰有余。如果这也是发送消息,我仍然认为发送少量电子邮件是可以的。我已经完成了一些测试电子邮件,到目前为止看起来还不错,但我想在使用它之前先检查一下。
在PHP中使用流套接字时,有两个超时:
- 连接超时,(look at the timeout parameter)
- 在套接字上写入或读取数据时超时(使用fread或fwrite)
fread 文档说:
a packet becomes available or the socket timeout occurs (for network streams)
Swiftmailer 中的三个任务似乎使用了这个超时参数:
- 连接到 smtp 服务器超时。
- 写邮件超时。 (Here a code写数据超时设置示例)
- 第三个,整个过程取决于邮件的大小(如RFC2821中所述)
但是,如果您不想等待邮件发送完毕再向用户发送回复,您应该查看 the messenger component。您将拥有两个异步进程,而不是只有一个进程。您的控制器将不再等待邮件发送,它只会向信使组件发送一条消息(“请向该新用户发送注册邮件”)。 Messenger 组件将启动一些操作来发送此邮件。状态字段通常用于了解邮件是否已成功发送。 Fabien Patencier 写了一本书“Symfony the Fast Track”,其中包含一个有用且完整的示例。