Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/230.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 mail VS Pear函数(但频率较慢)_Php_Email_Pear - Fatal编程技术网

对许多电子邮件使用php mail VS Pear函数(但频率较慢)

对许多电子邮件使用php mail VS Pear函数(但频率较慢),php,email,pear,Php,Email,Pear,我知道,对于大量电子邮件,建议使用Pear,但我想知道在我的案例中是否值得深入研究(我安装了它,但Pear有很多错误) 我需要向我的订户发送电子邮件(大约20K),但我的主机每小时只允许200封电子邮件。这没关系,因为我不需要每个人都同时收到电子邮件,我可以在一个月内发送所有这些邮件,我不着急 在这种情况下,有一个非常简单的循环,用mail()发送电子邮件,然后睡眠18秒(低于200封电子邮件/小时)可以吗。基本上,我想的只是做这样的事情 for($i=0;$i<=count($recip

我知道,对于大量电子邮件,建议使用Pear,但我想知道在我的案例中是否值得深入研究(我安装了它,但Pear有很多错误)

我需要向我的订户发送电子邮件(大约20K),但我的主机每小时只允许200封电子邮件。这没关系,因为我不需要每个人都同时收到电子邮件,我可以在一个月内发送所有这些邮件,我不着急

在这种情况下,有一个非常简单的循环,用mail()发送电子邮件,然后睡眠18秒(低于200封电子邮件/小时)可以吗。基本上,我想的只是做这样的事情

for($i=0;$i<=count($recipient);$i++)
{
   mail($recipient[$i].....);
   sleep(18);
}

for($i=0;$i如果您的服务器是基于linux的,那么您可能不会受到影响(请参阅)

虽然这听起来不是一个很好的解决方案,但也要考虑到您似乎在对所有收件人(20k)使用for循环

如果您不想使用PEAR,您可能希望尝试每小时设置一个cron作业,以某种方式(使用文本文件或数据库)记住上次向其发送电子邮件的用户,并发送下一批200个

在这种情况下,您可能希望每125分钟设置一次cronjon,以确保未达到限制。此外,在每次
mail()之后使用
sleep(1);
将节省CPU


查看性能注意事项。

如果您的服务器是基于linux的,您可能不会受到影响(请参阅)

虽然这听起来不是一个很好的解决方案,但也要考虑到您似乎在对所有收件人(20k)使用for循环

如果您不想使用PEAR,您可能希望尝试每小时设置一个cron作业,以某种方式(使用文本文件或数据库)记住上次向其发送电子邮件的用户,并发送下一批200个

在这种情况下,您可能希望每125分钟设置一次cronjon,以确保未达到限制。此外,在每次
mail()之后使用
sleep(1);
将节省CPU


查看性能注意事项。

首先,我不会说旧的
mail()
的局限性

  • 几乎所有东西的人工编码
  • 错误处理能力差
  • 无身份验证(虽然对您来说不是问题)
…与体积有关

第二,我从未使用过PEAR邮件,所以我不能谈论它的性能或开销,但您的用例恰恰来自一个低容量的电子邮件服务器。您不需要高性能来缓慢地完成任务,是吗

所以我敢说你使用了错误的标准来评估工具

我的建议是,对于极其简单和不重要的任务(订户通信不符合要求),您应该离开
mail()
,并使用适当的第三方邮件库,而不一定是PEAR

特别是,专为满足您的要求而设计的功能:

如果您的SMTP服务器有适当的限制以限制 如果您发送电子邮件,那么您的代码需要知道这一点 速率限制。节流器插件使Swift Mailer以更快的速度运行 速率限制速度

许多共享主机都不会免费打开其SMTP服务器。 通常他们都有相应的政策(可能是为了阻止垃圾邮件发送者) 这只允许你每小时/天发送固定数量的电子邮件

Throttler插件支持两种速率限制模式和 每种情况下,您都需要进行数学运算,以计算出所需的值。 该插件可以根据每分钟的电子邮件数量或 每分钟传输的字节数


首先,我不会说好的
mail()
的局限性

  • 几乎所有东西的人工编码
  • 错误处理能力差
  • 无身份验证(虽然对您来说不是问题)
…与体积有关

第二,我从未使用过PEAR邮件,所以我不能谈论它的性能或开销,但您的用例恰恰来自一个低容量的电子邮件服务器。您不需要高性能来缓慢地完成任务,是吗

所以我敢说你使用了错误的标准来评估工具

我的建议是,对于极其简单和不重要的任务(订户通信不符合要求),您应该离开
mail()
,并使用适当的第三方邮件库,而不一定是PEAR

特别是,专为满足您的要求而设计的功能:

如果您的SMTP服务器有适当的限制以限制 如果您发送电子邮件,那么您的代码需要知道这一点 速率限制。节流器插件使Swift Mailer以更快的速度运行 速率限制速度

许多共享主机都不会免费打开其SMTP服务器。 通常他们都有相应的政策(可能是为了阻止垃圾邮件发送者) 这只允许你每小时/天发送固定数量的电子邮件

Throttler插件支持两种速率限制模式和 每种情况下,您都需要进行数学运算,以计算出所需的值。 该插件可以根据每分钟的电子邮件数量或 每分钟传输的字节数


你看过PEAR的邮件队列包吗?你可以设置它在一个进程中发送X多封邮件,然后重新运行相同的脚本发送下X多封邮件


除了简洁的电子邮件,我当然不会使用本机邮件功能发送任何东西,也许是为了通知你应用程序中的异常情况。

你看过使用PEAR的邮件队列包吗?你可以将其设置为在一个进程中发送X多封电子邮件,然后重新运行相同的脚本发送下X多封

我当然不会使用本机邮件功能发送任何内容,而只会发送简洁的电子邮件,也许是为了在应用程序中通知您异常情况。