1

我正在使用两个电子邮件模板并测试了性能:

  1. 100 封电子邮件,每封电子邮件包含 25 种产品,耗时 24 秒。
  2. 100 封电子邮件,每封电子邮件包含 12 种产品,耗时 16 秒。

所有图像(例如徽标、横幅、产品)都是调用图像托管在服务器上的 URL 的文本)。

我觉得时间的增加(从 16 秒到 24 秒仅 100 封电子邮件)是惊人的,因为我只为每个产品添加了几 KB。如果这种情况仅发送 100 封电子邮件,那么发送数千封电子邮件在完成发送的时间和性能方面的影响会很大。我的代码使用这个:

....
require_once "/.../ea-php70/root/usr/share/pear/Mail.php";
$params['sendmail_path'] = '/usr/lib/sendmail';
$mail_object =& Mail::factory('sendmail', $params);
$timeoutSet = set_time_limit(18000); // set script time out to 5 hours 
...
for ($i = 1; $i <= 100; $i++) {
    ...
    $_mail = $mail_object->send($recipients, $headers, $sendContent); 
    ....
}
....

如何让我的 PEAR::Mail 实现更快地发送批量电子邮件?我怀疑我的服务器可能正在限制电子邮件,或者我需要更改一些 PEAR::Mail 设置,或者可能使用 SMTP 而不是 Sendmail。有任何想法吗?谢谢你。

更新 1:

我有一个 8 核 16 线程处理器。我所做的一件事是从 Web 浏览器的不同选项卡并行运行我的脚本,例如,发送 8000 封电子邮件不需要 4 分钟,而只需要 1 分钟,因为我分 4 批发送它们,每批 2000 封电子邮件,在 4 个并行且独立的进程中同时运行脚本。我正在尝试寻找其他方法来加快这项 CPU 密集型任务的速度,我想知道是否PEAR::Mail有一些设置可以修改以更快地发送电子邮件。

4

1 回答 1

0

当您发送相同数量的电子邮件但增加每封电子邮件中显示的产品数量时,时间会大大增加。这表明问题不是电子邮件的发送,而是邮件内容的创建。

如果所有邮件都包含相同的产品,则只生成一次内容,并为每封电子邮件重复使用该内容。

如果您有个性化的电子邮件,则只生成一次非个性化的邮件内容并重复使用。

于 2021-11-03T10:45:49.553 回答