我刚刚编写了一组批量电子邮件类,用于处理大量电子邮件并根据传递的参数解析其内容。如果我在我的数据库中测试 1000 个随机收件人和 1000 个随机发件人的电子邮件,直到脚本到达 send() 部分(我现在评论它),我得到大约 2 秒的性能和 20 MB 的峰值内存,这很棒。
但是,如果我取消注释发送部分,发送需要 30 秒。这是不可接受的,我想以某种方式加快速度。从测试中很明显,延迟是由 $mail->send() 调用引起的,就好像它在继续循环并发送下一封电子邮件之前等待它返回一些东西一样。
我想知道的是:如何加快 send() 调用?我该怎么做才能让它更快?我尝试使用两种发送方法:
- Zend SMTP 传输,直接连接到服务器并发送。每 1000 封电子邮件需要 30 秒。
- 通过 Zend_Mail 发送邮件。在准备好每封电子邮件后,只需调用 Zend_Mail 的发送函数。这需要 60 秒。
请注意,排队绝对是一种选择,我已经将它内置到我的课程中。所需要的只是激活一个 cron,它就像一个魅力。但我想知道实际发送以及如何加快发送速度。因此,实际的 send() 调用。