【发布时间】:2014-04-29 22:18:07
【问题描述】:
我需要在发票循环期间发送个性化电子邮件。意味着每个客户都会收到一封电子邮件,例如“亲爱的 Joe Smith 先生,...”。生成这些邮件没有问题。
一旦我向他们发送Send() 方法的每个调用,似乎都会发送单独的邮件。这意味着脚本连接到 SMTP 服务器,丢弃邮件然后断开连接。这非常耗时,因为我发送了数百封电子邮件。它会导致 PHP 执行时间溢出。这在使用大型附件时尤其成问题。
我想知道是否有更改首先将所有电子邮件发送到某种缓冲区或管道。循环结束后,仅建立一次连接。最好有某种后台工作来做这件事。
有什么想法吗?
【问题讨论】:
-
您可以在表格中设置标志(或消息),并通过 cron 作业发送电子邮件。
-
使用a job queue based solution。 IE。 不要尝试同步发送邮件。
-
@AD7six 这看起来很像我正在寻找的东西。谢谢。但是我知道对 CAKE 的控制台调用仍然会启动一个 PHP 进程。所以超时会再次出现。也许我只需要每 5 分钟对 50 封邮件进行计时,然后调用一个常规的 cron 作业。仍然丑陋....但向前迈进了一步。非常感谢所有回答的人。
-
cli php 进程默认没有时间限制。该插件实际上是一个守护进程——它会一直运行到没有要发送的邮件为止。我建议认真看一下被赞成的答案。
-
啊。不知道那个。那么这似乎是最好的解决方案。谢谢!