处理使用 Sendgrid 发送时事通讯的最佳方法是什么

问题描述

背景

我们的网站上有简报模块,每周两次处理大约 100,000 封电子邮件。用 PHP 5.6 编码的网站(我知道它太旧了,不再支持 PHP。但是,我们必须保留它,直到新网站准备好)并且时事通讯内容来自 wordpress(帖子)。我们有一个工具可以使用来自 wordpress内容来构建时事通讯。然后我们可以选择收件人列表并发送时事通讯。

时事通讯发送部分由 cronjob 处理为批处理(小批量,25),我们使用 sendgrid 作为邮件程序。我们使用的是 sendgrid PHP library 5.1.0 版,准确地说它使用 api v3 (https://api.sendgrid.com/v3)。

这是我用来将批次发送到 sendgrid(通过 sendgrid PHP 库)的示例代码

$sg_mail = array(
    "categories" => array( "MailID-XXX" ),"content" => array( array( "type" => "text/html","value" => $newsletter_html_code ) ),"from" => array( "email" => "newsletter@sample.domain","name" => "Sample Newsletter" ),"personalizations" => $personalizations,"subject" => "Sample Subject Line"
);

$sg = new \SendGrid(SG_MAIL_KEY);
$sg->client->mail()->send()->post($sg_mail);

在这里,我将发送时事通讯的完整 html 内容(大小约为 500KB),每个批次和 $personalizations 数组用于个性化详细信息,例如订阅者的姓名、地址和取消订阅链接

问题

此设置正在运行。但是,当 cronjob 运行时,它会使用服务器的大量资源,并且网站在发送过程中变得越来越慢。有时甚至无法到达。 PHP 5.6 的一个限制是为了寻求更现代的解决方案,但我们已经坚持了几个月。

我认为必须有一些解决方法来避免这种情况。我想在第一批中将时事通讯 HTML 内容一次发送到 sendgrid,并在后续批次中仅发送个性化数组以避免加载请求。不幸的是,我无法从 sendgrid 文档中找到任何文档来做这样的事情。

这里的任何人都知道任何此类程序或任何其他建议以改进此程序以避免在发送时事通讯时使用高服务器资源。处理这种情况的最佳方法是什么?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)