每隔一段时间发送 PHP 邮件



我正在为我的高中学生会开发一个简单的短信服务,我的托管服务每分钟只允许发送 19 条 PHP 邮件,那么有没有办法我可以设置一个间隔只发送 15 封电子邮件,等一下,再发送 15 封,等待,然后这样做直到发送所有邮件?下面是我的一些代码,您可能需要看到的是"foreach"部分。

$subject =     ""; 
$message =     "Hey, $first! $messageget";
$header =     'From: Student Council<email@email.net>' . "rn" .
               'Reply-To: email@email.net' . "rn" . 
              'X-Mailer: PHP/' . phpversion(); 

foreach($to as $value) { 
    $result = mail($value, $subject, $message, $header); 

} 

在 60 秒内发送 15 封邮件相当于每 4 秒发送一封邮件。

因此,如果您有一个将一个接一个地发送所有邮件的循环,则在发送每封邮件后通过执行sleep(4)来减速。

foreach($to as $value) { 
    $result = mail($value, $subject, $message, $header); 
    sleep(4);
} 

这比计算何时发送下一批 15 封邮件然后再等待 60 秒要容易得多。 :)

此外,它可以平衡 CPU 和网络资源的使用,并且在 60 秒后不会达到峰值。

在这种情况下可以使用 cron 作业.
http://www.google.com.tr/?q=cron+job+sending+email+php&oq=php+cron+job+sending
https://serverfault.com/questions/421485/cron-job-sending-bulk-emails-at-a-time

foreach($to as $i=>$value) { 
    if($i%15==1) sleep(60);
    $result = mail($value, $subject, $message, $header);
} 

计数可以使用模数 $i%15(每 15 次运行一次)完成,然后在睡眠时暂停(60);

(上面的答案假设您的array_keys是数字和顺序,您也可以使用:)

$i=0;
foreach($to as $value) { 
    if($i%15==1) sleep(60);
    $result = mail($value, $subject, $message, $header);
    $i++;
} 

您可以使用sleep()函数:

 sleep(60); // wait during 60 seconds

您只需使用以下函数:

 sleep(60);

把它放在你的循环中。

编辑:

对于电子邮件计数,只需在循环中将发送的电子邮件相加:

$i=0;  // about the foreach loop

和循环调用内部

if($i<15){ $i++; continue; }
else{ $i=0; }
sleep(60);

希望能清除它。

编辑2:如果没有,请在此处:

$subject =     ""; 
$message =     "Hey, $first! $messageget";
$header =     'From: Student Council<email@email.net>' . "rn" .
               'Reply-To: email@email.net' . "rn" . 
              'X-Mailer: PHP/' . phpversion(); 
$i=0;
foreach($to as $value) { 
    $result = mail($value, $subject, $message, $header); 
    if($i<15){ $i++; continue; }
  sleep(60);
} 

最新更新