$i = 1;
foreach ($recipients as $email => $name) {
$mail->ClearAddresses();
$mail->AddBCC($email, $name);
if (!$mail->send()) {
$send = 0;
} else {
$send = 1;
}
$query = "INSERT INTO `newsletter_send`(`email`, `id_newsletter`, `date`, `send`) VALUES ('$email',$id_newsletter, NOW(),$send) ";
$stmt = $link->prepare($query) or die('error');
$stmt->execute();
$mail->clearAllRecipients();
if (($i % 100) == 0) {
sleep(60);
}
$i++;
}
什麼是最好的方式發送一個大的電子郵件沒有睡眠(),而無需等待頁面完成加載?除了cron工作外,你還有其他想法嗎?如何發送大郵件?
編輯:我有680個用戶誰將收到電子郵件,但一段時間後,我得到500內部服務器錯誤..爲什麼?它可能是time_limit?
試着通過cron發送它 –
如果你不想使用cron,你可以使用像beanstalk這樣的隊列管理器。儘管在任務調度程序已經可用的情況下,您仍然需要在服務器上安裝額外的軟件。 – jeroen
你爲什麼要做'sleep()'調用?郵件服務器應該排隊消息並在服務器準備就緒時發送 - 除非它有限制。 – Tigger