PHP,sendmail和传输 - 如何加快邮件发送速度

Swa*_*der 6 php email zend-framework sendmail zend-mail

我刚刚编写了一组批量电子邮件类,用于处理大量电子邮件并根据传递的参数解析其内容.如果我在我的数据库中测试1000个随机收件人和1000个随机发件人的电子邮件,直到脚本点击send()部分(我现在评论它),我获得大约2秒的性能和20 MB峰值内存,这很棒.

但是,如果我取消注释发送部分,则发送需要30秒.这是不可接受的,我想以某种方式加快速度.从测试中可以明显看出,延迟是由$ mail-> send()调用引起的,就好像它在等待它返回一些东西然后继续循环并发送下一封电子邮件一样.

我想知道的是:如何加快send()调用?我该怎么做才能让它更快?我尝试使用两种发送方法:

  1. Zend SMTP传输,直接连接到服务器,只是发送.每1000封电子邮件需要30秒.
  2. Sendmail通过Zend_Mail.在准备好每封电子邮件后,只需调用Zend_Mail的发送功能即可.这需要60秒.

请注意,排队绝对是一个选项,我已经将它构建到我的课程中.所需要的只是激活一个cron,它就像一个魅力.但我想知道实际发送以及如何加快速度.所以,实际的send()调用.

Tom*_*far 2

我将邮件保存在一个目录中并使用 shell 脚本(cron/daemon/...)发送它们:

Zend_Mail::setDefaultTransport(
    new Zend_Mail_Transport_File(
        array(
            'path' => __DIR__,
            'callback' => function() {
                do {
                    $file = 'email-' . date('Y-m-d_H-i-s') . '_' . mt_rand() . '.eml';
                } while (file_exists($file));
                return $file;
            },
        )
    )
);
Run Code Online (Sandbox Code Playgroud)