2017-10-04 52 views
-2

我正在创建一个脚本,用于发送具有不同主题和动态消息的批量电子邮件。我正在使用for循环和php邮件功能来发送邮件。当我运行脚本时,发送所有电子邮件需要很长时间,并且消耗高CPU使用量。你有没有任何建议或任何脚本运行速度快,发送500电子邮件一次没有高CPU负载的电子邮件。使用php发送批量电子邮件问题

感谢

+1

您是否试过https://github.com/PHPMailer/PHPMailer? – Andreah

+0

是的,我已经使用phpmailer,php的邮件和wp_mail函数,所有的消耗高CPU负载。 –

+1

在一定程度上,您总是需要将该电子邮件外包给发送到单独的服务。这可能是一个API,另一个PHP脚本处理来自数据库或排队系统的作业,或任何其他许多事情。从根本上讲,发送一封电子邮件需要时间,发送500封邮件需要花费500倍的时间。 – iainn

回答

1

从PHP文件

注:值得注意的是,邮件()函数不适合在一个循环 较大的电子邮件的容量。此功能为每封电子邮件打开并关闭一个 SMTP套接字,但效率不高。有关发送大量电子邮件的 ,请参阅»PEAR :: Mail和» PEAR :: Mail_Queue软件包。

我建议使用PHPMailer

您还应该考虑在单独的线程中处理脚本。

1

如果您没有使用queue系统,那么使用您的mailer无法扩展您的解决方案。处理耗时的任务,特别是发送电子邮件应该是后台任务,并由queue处理。

如果您的应用程序处于开发的早期阶段,那么最好使用像Laravel这样的框架,该框架内置queue system。我强烈推荐它。

如果不是更好地遵循这些帖子,他们展示了如何将队列系统合并到基本的php应用程序。

由于@icy2k以下建议,PHPMailer会比内置mail()功能更好的选择。因此,对他来说,指出这一点。如果您打算使用Laravel,则它具有内置功能强大的mailer系统。