Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将PHP邮件功能划分为不同的任务,使其更加高效,能够处理更多的收件人_Php - Fatal编程技术网

将PHP邮件功能划分为不同的任务,使其更加高效,能够处理更多的收件人

将PHP邮件功能划分为不同的任务,使其更加高效,能够处理更多的收件人,php,Php,假设我想向10000多个不同的收件人(电子邮件地址)发送10000多封电子邮件,这些邮件都是从SQL DB获取的,但显然,我在使用mail()时会遇到问题函数本身 所以我在想,如果我把任务(发送10000封电子邮件)分成100个不同的任务,每3秒通过AJAX处理一次 这就是我将大任务划分为许多小任务的想法: 首先,检查任务中有多少收件人(本例中为10000) 如果任务中有100多个收件人,则开始划分: 如果有200个或更少的收件人,将总数分为2 或者如果超过200个,分成3个,以此类推 因此,基

假设我想向10000多个不同的收件人(电子邮件地址)发送10000多封电子邮件,这些邮件都是从SQL DB获取的,但显然,我在使用
mail()时会遇到问题函数本身

所以我在想,如果我把任务(发送10000封电子邮件)分成100个不同的任务,每3秒通过AJAX处理一次

这就是我将大任务划分为许多小任务的想法:

首先,检查任务中有多少收件人(本例中为10000)

如果任务中有100多个收件人,则开始划分:

如果有200个或更少的收件人,将总数分为2

或者如果超过200个,分成3个,以此类推

因此,基本上,确保总数被划分为不同的任务,每个任务不超过100个收件人

然后将每组收件人以及用户messege和subject以及所有其他标题和内容存储在每行的SQL db中

然后,AJAX请求每3秒运行一次,每次处理一个任务

因此,最终结果是:我将在SQL db中有许多不同的任务等待完成。每3秒完成一次

现在我需要知道这是否真的更有效,是否允许我使用mail();要处理更高的音量

还是我只是在浪费时间


干杯

为什么不使用邮件队列?在数据库中创建一个队列,然后逐个处理。这也提供了创建优先级的能力。只需每隔一分钟左右运行一次cron作业,然后发送一批


当然,你不应该使用raw
mail()
函数,而是应该使用一个邮件类,例如,它负责邮件头、简单附件、多个收件人等。

我只会使用spool(队列)。

我不知道这是否回答了你的问题,但我们在工作中实现了PHPList来处理这个问题。它是开源的,允许您控制电子邮件列表、限制和一系列其他设置。我们有一个30万用户的数据库,目前我们的电子邮件列表有12000个。我们所要做的就是创建电子邮件并单击“发送”,然后在一周内,它会成批发送电子邮件(你也可以控制这一点)。如果这是您将要对收件人多次执行的操作,我建议您查看一下。

好的,然后,使用ajax调用队列脚本,如前所述:)